我正在尝试使用正则表达式查找 div 中的所有内容。我知道可能有更聪明的方法来执行此操作 - 但我选择了正则表达式。
所以目前我的正则表达式模式如下所示:
$gallery_pattern = '/<div class="gallery">([\s\S]*)<\/div>/';
它在某种程度上起到了作用。
问题是如果我有两个 div 一个接一个 - 就像这样。
<div class="gallery">text to extract here</div>
<div class="gallery">text to extract from here as well</div>
我想从两个 div 中提取信息,但我的问题是,在测试时,结果是我没有得到介于两者之间的文本,而是:
"text to extract here </div>
<div class="gallery">text to extract from here as well"
总结一下。它会跳过 div 的第一端。并继续下一个。
div 内的文本可以包含 <
, /
和换行符。只是想让你知道!
有没有人有解决这个问题的简单方法?我仍然是正则表达式的新手。
最佳答案
当有方便的 DOM 库时,您不应该使用正则表达式来解析 HTML:
$str = '
<div class="gallery">text to extract here</div>
<div class="gallery">text to extract from here as well</div>
';
$doc = new DOMDocument();
$doc->loadHTML($str);
$divs = $doc->getElementsByTagName('div');
if ( count($divs ) ) {
foreach ( $divs as $div ) {
echo $div->nodeValue . '<br>';
}
}
关于php - 正则表达式 php : find everything in div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1352078/