在测试环境中,$ html是通过CURL(scrape)查询到另一个页面/站点创建的20到30行或更多HTML,但为了简单起见,我将其简化为这个简单示例:
我需要用ID" keepthis"来回应DIV。以及HTML结构完整的所有内容,但删除它之前和之后的所有内容。带有ID的DIV"删除这个"将始终拥有该ID。我查看了涉及substr / explode / trim的多个帖子,但我无法找到或开始使用从
的位置0开始删除$ html中所有内容的方法div(deletethis)不是位于代码中固定的#字符,我能够在DIV(keepthis)工作之前获得所有删除,而不是另一方。任何帮助将不胜感激。
$html = '<h1>hello world</h1><div id="keepthis"> Sample content</div><div id="deletethis">a bunch of other dynamic html here</div>';
$x = substr($html, strpos($html, '<div id="keepthis">')); //cleans up the BEFORE code
echo $x;
答案 0 :(得分:0)
所以根据链接试试这个:
$html = '<h1>hello world</h1><div id="keepthis"> Sample content</div><div id="deletethis">a bunch of other dynamic html here</div>';
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$result = $xpath->query('//div[@id="keepthis"]');
if ($result->length > 0) {
var_dump($result->item(0)->nodeValue);
}
警告:节点值不会输出标签,但您可以遍历$ result-&gt; item(0)的子节点来获取它们
答案 1 :(得分:-2)
string rtrim ( string $str [, string $character_mask ] )
此函数返回一个字符串,其中包含从str。
末尾删除的空格如果没有第二个参数,rtrim()将删除这些字符: