这就是我想要做的事情:
使用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;
答案 0 :(得分:0)
当您的代码echo end(explode('Item description', $body));
将所有或全部$body
作为字符串返回时,表示'Item description'
未找到。
返回空字符串表示返回数组的最后一个元素是空字符串