これが私がやりたいことです:
- HTML ページの本文部分を取得し、そこから HTML タグを取り除く
爆発を使用して、指定された文字列に続くテキストを返します
$html = file_get_contents($url); $html = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8"); $dom = new DOMDocument; $dom->loadHTML($html); $xpath = new DOMXPath($dom); $query = $xpath->query("/html/body"); $body = $dom->saveXML($query->item(0)); $body = strip_tags($body); echo end(explode('Item description', $body));
最後の行は期待どおりに機能しません。区切り文字としてスペースを含む文字列を使用すると、機能しません (すべてを返すだけです)。「説明」など、スペースのない単一の単語を使用すると機能します。フレーズで機能させるにはどうすればよいですか? strpos でも同じ問題がありました。 $needle にスペースがあると、正しい結果が得られません。
アップデート:
ソースhtmlには、 ie
で区切り文字として使用していた2つの単語の間にexplode
Item description
私はやってみstr_replace(" ", ' ', $body);
ましたが、それは何もしませんでした。ただし、str_replace(" ", ' ', $html);
処理される前にhtmlを実行する$dom->saveXML
と、問題が修正されました。
この
ブログ投稿$dom->saveXML
は、html を変更している可能性が高いと思いました。