【发布时间】:2016-10-20 03:57:49
【问题描述】:
我有一组看起来像这样的 html 字符串:
<div id="myelementID" class="hello" data-foo="bar"> ... </div>
或
<div id="myelementID" class="world" data-this="that"> ... </div>
等等等等,你明白了。除了id="myelementID",其他属性都不固定。
我需要的是提取<div> 的确切字符串,例如。 <div id="myelementID" class="hello" data-foo="bar"> 如果存在 ID 为“myelementID”的元素。
到目前为止,我可以使用 DomDocument 来检查元素是否存在:
$dom = new DomDocument;
$dom->validateOnParse = true;
$internalErrors = libxml_use_internal_errors(true);
$dom->loadHTML($html_string);
libxml_use_internal_errors($internalErrors);
$el = $dom->getElementById("myelementID");
从这里,我如何获取元素的 HTML 字符串?我也愿意使用 preg_match,这可能是一个更好的解决方案。
编辑
为了更清楚,我不是在寻找元素的内容。我正在寻找字符串<div id="myelementID" etc="etc" this="that">。因为除了它的 ID 是“myelementID”之外,它不确定元素具有什么属性,这就是我遇到问题的原因。
【问题讨论】:
-
我已经读过那个帖子了。这不是重复的,而是关于不同的问题,并且没有有效的答案。
-
我认为在这种情况下你可以使用正则表达式是的。像
if(preg_match("#<div id="myelementID"[^>]*>(.*)<\/div>"#,$el,$match) > 0)这样的东西就足够了,$match[1] 有你的内容 -
不要...正则表达式... html...
-
您的正则表达式抛出错误。
标签: php html preg-match domdocument