Php 如何从html字符串中检索html元素开始标记?
我正在尝试从html字符串中检索开始标记。我想包括Php 如何从html字符串中检索html元素开始标记?,php,html,regex,Php,Html,Regex,我正在尝试从html字符串中检索开始标记。我想包括中的所有内容 现在,我正试图这样做,但它似乎导致了编码问题,因为当我打印生成的$html utf-8字符时显示不正确: $dom = new DOMDocument(); $dom->loadHTML($html); //Evaluate Anchor tag in HTML $xpath = new DOMXPath($dom); $elements =
中的所有内容
现在,我正试图这样做,但它似乎导致了编码问题,因为当我打印生成的$html utf-8字符时显示不正确:
$dom = new DOMDocument();
$dom->loadHTML($html);
//Evaluate Anchor tag in HTML
$xpath = new DOMXPath($dom);
$elements = $xpath->evaluate("/html/body//h1");
for ($i = 0; $i < $elements->length; $i++) {
print_r($elements->item($i));
}
// save html
$html=$dom->saveHTML();
$dom=newdomdocument();
$dom->loadHTML($html);
//在HTML中计算锚定标记
$xpath=newdomxpath($dom);
$elements=$xpath->evaluate(“/html/body//h1”);
对于($i=0;$i<$elements->length;$i++){
打印($elements->item($i));
}
//保存html
$html=$dom->saveHTML();
我怎样才能确保它包含了所有的东西,直到
结束?不是专家,但我做到了:
<h1( [^>]*(["'].*["'])\1*)?>
]*([“].[“]])\1*)?>
以下是我的测试:
更新1:
<h1\s*>|(.*=['"]*[^'"]*['"]*)>
<h1(.+=((['"]+[^'"]*['"]+)|[0-9]+))*\s*>
|(.*=['”]*[^']*['”]*['”]*)>
更新2:
<h1\s*>|(.*=['"]*[^'"]*['"]*)>
<h1(.+=((['"]+[^'"]*['"]+)|[0-9]+))*\s*>
我对应该支持h1标记的内容进行了建模。不要为此使用正则表达式。嗨,昆汀,正如你建议的那样,我使用了DOM。我将稍后上载实现。我刚刚编辑了问题以显示我在做什么,但是我在编码方面遇到了问题,我不确定evaluate方法是如何工作的,因此可能会导致问题。@DJDavid98不会的“不能很好地处理
之类的事情。看看如果使用regex解析HTML会发生什么:@Oriol任何
不属于HTML标记的代码都应该转义为
和
。如果有人在使用regex的同时使用这样的有问题的代码,那是他们的错。它与
,
不匹配。”也不是
@Oriol,它现在已被部分更正,但仍然不匹配
或类似内容。更新1匹配
,但直到结束。@Oriol您有一组测试,对吗?;)请检查更新2。