php - 正则表达式 php : find everything in div

标签 php regex html extract

我正在尝试使用正则表达式查找 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/

相关文章:

javascript - jQuery - 自动完成属性未应用于动态创建的组合框?

javascript - 通过 jQueryUI 传递时不显示 html 实体

javascript - 在 Javascript 中使用插入符号作为指数

java - 在文本中查找电子邮件地址

html - 屏幕上的 Cordova CSS 缩放图像

php - 我可以使用 PHP 随机字符串随机播放获得的不同字符串的数量

php - 在嵌套在 html 中的 php 中创建一个从 1 到 100 的表

php - 在 laravel 控制台执行 php artisan migrate 时出错

javascript - DateTime 和 DateTimeZone 的奇怪行为

python - 如何使用 Python 在二进制文件中查找 float ?