修剪/删除所有DIV后的ID


trim/delete Everything after DIV with ID

在测试环境中$html是20到30行或更多的html是通过CURL(抓取)查询创建到另一个页面/站点,但为了问题的简单性,我将其简化为以下简单示例:

我需要用ID"keepthis"和它的HTML结构完整的所有内容来回应DIV,但删除它之前和之后的一切。ID为"deletethis"的DIV将始终具有该ID。我看过涉及substr/explosion/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;

所以基于这个链接试试:

$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->item(0)的子节点以获得它们

string rtrim ( string $str [, string $character_mask ] )

这个函数返回一个字符串,并从str的末尾去掉空格。

如果没有第二个参数,rtrim()将删除这些字符: