使用PHP和Regex提取Div的内容

我正在尝试使用 PHP 提取 div 的内容,而与类名和其他参数无关。

我需要的是,我有多行,单行,多参数div,例如


<div class="my-class additional-class"><div class="my-class2">
<div class="my-class"></div>
</div>

</div>

我想获得第一个 div 的所有内容,而不是第一个 div。

<div class="my-class2">
<div class="my-class"></div>
</div>

通常,我猜

<div.*>(.*)</div>/mU

应该有效,但我不确定为什么没有。

我遇到过这个

(?s)(?<=<divsclass="test">n).*(?=</div>)

它适用于类名,test但我无法使其工作

(?s)(?<=<div.*>n)(.*)(?=</div>)

任何帮助表示赞赏。

谢谢,

回答

这是使用DOM解析器获取它的方法:

<?php
$html = '<div class="my-class additional-class"><div class="my-class2">
<div class="my-class"></div>
</div>
</div>';

$doc = new DOMDocument();
$doc->loadHTML($html); // loads your html
$elems = $doc->getElementsByTagName('div'); // find all div elements
$outerdiv = $elems->item(0); // outermost div
echo $outerdiv->childNodes[0]->C14N() . "n"; // print inner HTML

/*
<div class="my-class2">
<div class="my-class"></div>
</div>
*/
?>

如果您真的想要正则表达式解决方案,请使用:

~<div[^>]*>(.*)</div>~is

并抓住捕获组#1。


以上是使用PHP和Regex提取Div的内容的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>