【发布时间】:2017-04-25 23:44:51
【问题描述】:
<?php
$arr = array();
$html = "<p class='images'>
<img src='URL1'>
<img src='URL2'>
<img src='URL3'>
<img src='URL4'>
</p>
<p><img src='ThisNot'></p>
";
preg_match_all('/<p class=\'images\'>(?:\s*<img src=\'([^\']*)\'>\s*)*\s*<\/p>/ism', $html,$arr);
print_r($arr);
输出
Array (
[0] => Array
(
[0] => <p class='images'> <img src='URL1'> <img src='URL2'> <img src='URL3'> <img src='URL4'>
</p>
)
[1] => Array
(
[0] => URL4
)
)
正则表达式 * 只返回 preg_match_all 中的最后一个匹配 匹配已经发生但没有返回到输出数组 如何获取所有的 URL?
当我尝试使用两个 preg_match_all 第一个来获取时,它起作用了
内容,然后匹配所有图像,但我想只获得一个
【问题讨论】:
-
为什么不使用 DOMDocument? php.net/manual/en/class.domdocument.php
-
我认为单行正则表达式不可能做到这一点。当在重复匹配中找到一个新组时,它不会存储前一个组。但是使用两个
preg_match_all有什么问题?
标签: php regex preg-match-all