1

これが私がやりたいことです:

  • 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つの単語の間にexplodeItem description

私はやってみstr_replace(" ", ' ', $body);ましたが、それは何もしませんでした。ただし、str_replace(" ", ' ', $html);処理される前にhtmlを実行する$dom->saveXMLと、問題が修正されました。

この ブログ投稿$dom->saveXMLは、html を変更している可能性が高いと思いました。

4

1 に答える 1

0

コードecho end(explode('Item description', $body));がすべてまたはすべてを文字列として返す場合、それはnot found$bodyを意味します。'Item description'そして、戻り配列の最後の要素が空の文字列であることを意味する空の文字列を返す場合

于 2013-07-01T07:24:21.130 に答える