ホームページ > バックエンド開発 > PHPチュートリアル > PHPがHTMLを処理すると文字列が切り詰められる

PHPがHTMLを処理すると文字列が切り詰められる

WBOY
リリース: 2016-06-23 13:51:38
オリジナル
950 人が閲覧しました

stream=fopen("xxx.html");var str = '';while(!feof(stream){      size+=1024;     str.=fread(stream,size);}....
ログイン後にコピー


str は 1024 バイトしか取得できず、残りは切り捨てられますが、fread はそれを読みました。.= に何か問題があるのでしょうか、それとも切り捨ての原因となる特殊文字が HTML にありますか?
神様、ありがとうございます


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

$stream=fopen("test.txt","a+");$str = '';$size=1024;while(!feof($stream)){	$str.=fread($stream,$size);}fclose($stream);echo $str;
ログイン後にコピー
ログイン後にコピー

$stream=fopen("test.txt","a+");$str = '';$size=1024;while(!feof($stream)){	$str.=fread($stream,$size);}fclose($stream);echo $str;
ログイン後にコピー
ログイン後にコピー

私が読んだものは、閲覧モードとは関係がないはずですが、一部のページはクロールできます。一部のページがクロールできません。特定の HTML タグに問題があると思われますか?ありがとうございます

上記のコードに関しては、機能しません、おそらく間違って書いています

あなたが言及したHTML内の特定の特殊文字については、存在するべきではありません
そして、あなたはHTMLを読んでいるだけで、データは存在しません大きい場合は、 file_get_contents() を使用することをお勧めします。パフォーマンスは fread よりも優れています

あなたのコードは PHP コードではありません

上記のコードに関する限り、実行できません。おそらく間違って記述されている可能性があります

あなたが言及した HTML の特別な部分 文字は存在すべきではありません
そして、あなたは HTML を読んでいるだけです、データは大きくありません、file_get_contents() を使用することをお勧めします、パフォーマンスは fread よりも優れています

さて、私はそれを走り書きしました、大まかにつまり、私は cms 、エントリーレベルの php を変更し始めたところです。
あなたが書いたことは正しいですが、デバッグ時に問題が発生しました。while の fread は毎回データを読み取ることができますが、文字列 str に追加すると、str の長さは変わりますが、内容は毎回変わります。増加します。デバッグ中に一部の変数しか表示されないのですか? xdebugの最大表示長を変更しましたが、効果がありませんでした。デバッグにvs.phpを使用しました。すべてを表示するにはどうすればよいですか。 str がどのくらい保存されているかを確認するにはどうすればよいですか? 長さが増加するだけで、内容は変化しません
プログラムを実行するには
$stream=fopen("test.html","r");$str = '';$size=1024;while(!feof($stream)){	$tmp=fread($stream,$size);	file_put_contents('d:/log.log',$tmp.PHP_EOL,FILE_APPEND);	$str.=$tmp;	$tmp='';}fclose($stream);echo $str;
ログイン後にコピー
ログイン後にコピー

を使用し、log.log を開いてそれぞれの行に読み取られたデータを表示します。 while ループ


コードは何ですか? C?

$stream=fopen("test.html","r");$str = '';$size=1024;while(!feof($stream)){	$tmp=fread($stream,$size);	file_put_contents('d:/log.log',$tmp.PHP_EOL,FILE_APPEND);	$str.=$tmp;	$tmp='';}fclose($stream);echo $str;
ログイン後にコピー
ログイン後にコピー

を使用してプログラムを実行し、log.log を開いて表示します。各行は、各 while ループで読み取られたデータです


わかりました、試してみます。

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