1

这是我想要做的:

  • 获取 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 在我用作ie 中的分隔符的两个单词之间有一个explodeItem description

我试着做str_replace(" ", ' ', $body);,但没有做任何事情。但是,当我str_replace(" ", ' ', $html);对 html 进行处理之前,它被$dom->saveXML修复了问题。

这篇 文让我觉得这$dom->saveXML可能会改变 html;

4

1 回答 1

0

当您的代码echo end(explode('Item description', $body));将所有内容或全部$body作为字符串返回时,这意味着'Item description'not found 。而当返回空字符串时,意味着返回数组的最后一个元素是空字符串

于 2013-07-01T07:24:21.130 回答