php爆炸无法正常工作,字符串作为分隔符

时间:2013-07-01 07:02:53

标签: php explode

这就是我想要做的事情:

  • 获取html页面的正文部分并从中删除html标记
  • 使用explode返回给定字符串后的文本

    $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在我用作 中的分隔符的两个单词之间有explode,即Item description

我尝试过str_replace(" ", ' ', $body);但是没有做任何事情。 但是,当str_replace(" ", ' ', $html);处理h $dom->saveXML之前由$dom->saveXML处理它时修复了问题。

blog post让我觉得{{1}}可能会改变html;

1 个答案:

答案 0 :(得分:0)

当您的代码echo end(explode('Item description', $body));将所有或全部$body作为字符串返回时,表示'Item description'未找到。 返回空字符串表示返回数组的最后一个元素是空字符串