ホームページ > バックエンド開発 > PHPチュートリアル > 通常のヒーローから助けてください

通常のヒーローから助けてください

WBOY
リリース: 2016-06-23 14:03:40
オリジナル
919 人が閲覧しました

HTTP/1.1 200 OKServer: nginx/0.7.68Date: Sat, 02 Mar 2013 07:44:57 GMTContent-Type: application/rss+xml; charset=utf-8Transfer-Encoding: chunkedConnection: keep-alive3ab4<?xml version="1.0" encoding="utf-8"?><rss version="2.0"> 	<channel> 	<title>CSDN 移动频道(资讯)</title> 	<link>http://mobile.csdn.net</link> 	<description>开放平台</description> 		<lastBuildDate>Sat, 02 Mar 2013 15:44:50</lastBuildDate> 					<item>				<title>移动周报:我为什么弃用Objective-C而选择RubyMotion?</title>				<link>http://www.csdn.net/article/2013-03-01/2814309-mobile-weekly-choose-rubymotion-for-ios-dev</link>				<description><![CDATA[我们为您精心准备了CSDN移动频道本周最精彩的热点新闻,开发者直言RubyMotion优与劣,讲述为何弃用Objective-C而选择RubyMotion;出生贫苦的Minecraft开发者Notch大神特立独行,始终秉承开放的游戏开发理念;移动互联网大潮来袭,国家级老牌媒体China Daily将怎样拥抱新媒体时代?]]></description>				<author>唐小引</author>				<pubDate>Fri, 01 Mar 2013 23:41:01</pubDate>				<guid>http://www.csdn.net/article/2013-03-01/2814309-mobile-weekly-choose-rubymotion-for-ios-dev</guid>			</item> 					<item>				<title>遍地撒网,重点培养,King.com颠覆性游戏商业模式</title>				<link>http://www.csdn.net/article/2013-02-27/2814282-king.com-game-launch</link>				<description><![CDATA[在App Store的Top Grossing排行榜中,Candy Crush Saga已经排到第二位,仅次于Supercell的Clash of Clans,其开发公司king.com也因此名声大噪,并在移动端打败Zynga,它的成功离不开公司商业模式的创新:发布三部曲+高质游戏+顺势而行。]]></description>				<author>陈徐天九</author>				<pubDate>Fri, 01 Mar 2013 10:49:52</pubDate>				<guid>http://www.csdn.net/article/2013-02-27/2814282-king.com-game-launch</guid>			</item> ...
ログイン後にコピー

上記の内容を正規表現を使って2つに分けたいです
空行で区切られた2つの部分は、
1. レスポンス基本情報
HTTP/1.1 200 OKServer: nginx/0.7.68Date: Sat, 02 Mar 2013 07:44:57 GMTContent-Type: application/rss+xml; charset=utf-8Transfer-Encoding: chunkedConnection: keep-alive
ログイン後にコピー

2. レスポンス内容
3ab4<?xml version="1.0" encoding="utf-8"?><rss version="2.0"> 	<channel> 	<title>CSDN 移动频道(资讯)</title> 	<link>http://mobile.csdn.net</link> 	<description>开放平台</description> 		<lastBuildDate>Sat, 02 Mar 2013 15:44:50</lastBuildDate> 					<item>				<title>移动周报:我为什么弃用Objective-C而选择RubyMotion?</title>				<link>http://www.csdn.net/article/2013-03-01/2814309-mobile-weekly-choose-rubymotion-for-ios-dev</link>				<description><![CDATA[我们为您精心准备了CSDN移动频道本周最精彩的热点新闻,开发者直言RubyMotion优与劣,讲述为何弃用Objective-C而选择RubyMotion;出生贫苦的Minecraft开发者Notch大神特立独行,始终秉承开放的游戏开发理念;移动互联网大潮来袭,国家级老牌媒体China Daily将怎样拥抱新媒体时代?]]></description>				<author>唐小引</author>				<pubDate>Fri, 01 Mar 2013 23:41:01</pubDate>				<guid>http://www.csdn.net/article/2013-03-01/2814309-mobile-weekly-choose-rubymotion-for-ios-dev</guid>			</item> 					<item>				<title>遍地撒网,重点培养,King.com颠覆性游戏商业模式</title>				<link>http://www.csdn.net/article/2013-02-27/2814282-king.com-game-launch</link>				<description><![CDATA[在App Store的Top Grossing排行榜中,Candy Crush Saga已经排到第二位,仅次于Supercell的Clash of Clans,其开发公司king.com也因此名声大噪,并在移动端打败Zynga,它的成功离不开公司商业模式的创新:发布三部曲+高质游戏+顺势而行。]]></description>				<author>陈徐天九</author>				<pubDate>Fri, 01 Mar 2013 10:49:52</pubDate>				<guid>http://www.csdn.net/article/2013-02-27/2814282-king.com-game-launch</guid>			</item> ...
ログイン後にコピー


返信ディスカッション(解決策)へ

httpヘッダーを読まなければ十分ではないでしょうか?

httpヘッダーを読まなければ十分ではないでしょうか?
ヘッダー情報が必要です。 Transfer-Encoding: chunked

$arr=preg_split('/(?<=Connection: keep-alive)\s+/s',$s);print_r($arr);
ログイン後にコピー

ヘッダー情報が必要なので。 Transfer-Encoding: chunked this Transfer-Encoding: chunked は意味がないからです

PHP code?12$arr=preg_split('/(?<=Connection: keep-alive)s+/s',$ s);print_r ($arr);
すべての応答ヘッダー情報が Connection で終わるわけではありません

2 階の pktmalaha からの返信を引用します: ヘッダー情報が必要です。 Transfer-Encoding: chunked はあなたにとって無意味だから


もちろん、それが必要です。chunked の場合は、untunk が必要だからです

2 階の pktmalaha からの返信を引用: ヘッダー情報が必要です。なぜなら、Transfer-Encoding: chunked はあなたにとって無意味だからです

私のコードは多くのことを行うためにそれを必要とするので、ヘッダー情報が必ず必要です。 Transfer-Encoding: chunked はあなたにとって意味がないからです

もちろん、それが必要です。なぜなら、それがチャンク化されていてアンタンクが必要な場合、返されたヘッダーを自分で分析する必要があるからです

この場合、その必要はありません。定期的なことになります!
空白行 (ヘッダーの終わり) を読むまでヘッダー情報を 1 行ずつ読み取る必要があります

これは正規表現でできる仕事ではありません

からの 2 つの部分をインターセプトするだけでは十分ではないでしょうか最初の空白行?
その後、自分で頭部を分析してください

最初の空白行から 2 つの部分を切り出すだけで十分ではないでしょうか?
それから自分でヘッドを分析してください

正規表現についてはあまり知りませんが、空白行からインターセプトしたいだけです


この投稿は 2013 年 3 月 4 日に xuzuning によって最終編集されました。 08:29:12
引用 6 Lou pktmalaha の返信: 4 階の xuzuning の返信を引用: 2 階の pktmalaha の返信を引用: ヘッダー情報が必要です。 Transfer-Encoding: chunked はあなたのためにあるからです...

ヘッダー情報の処理を行うにはヘッダー情報が必要で、本体の処理を行うには本体が必要です。そして、ソケットを使用して取得したコンテンツが混在しています。規則性を利用してこの 2 つを分離できるでしょうか?必要なものを伝える代わりに、正規表現を入力してください。

explode("rnrn", $str, 1);は正規ですが、explode の最初のパラメータは正規ですか?

取得する応答データが応答ヘッダー + 応答件名である場合、http 応答ヘッダーは 2 つの空白行で終わります。分離の基礎として使用できます。


別の方法として、応答ヘッダーと応答トピックを個別に取得できるライブラリが多数あります。たとえば、httplib

は、12 階の helloyou0 からの返信を引用しました:explode("rnrn", $str, 1); 必要なのは規則性であることがわかります。explore の最初のパラメーターは規則性ですか?規則性を使用できる場合は使用しないことをお勧めします。規則性は効率的ではありません。

改行を使って2つの部分に分割するだけです

正規表現を使用する必要がある場合は、次の書き方を試してください

$arr = preg_split('#^[\r\n]#m', $text);print_r($arr);
ログイン後にコピー


正規表現を使用しなければならない理由は何ですか?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート