查找字符串中没有换行符的所有匹配项

时间:2013-06-25 08:11:35

标签: php regex string

我有一个字符串如下:

<a href="http://www.google.com"><img class="size-medium wp-image-427  alignnone" alt="" src="http://localhost/lucite/wp-content/uploads/Koala-300x225.jpg" width="300" height="225" /></a><a href="http://www.berg.nl"><img class="size-medium wp-image-426  alignnone" alt="" src="http://localhost/lucite/wp-content/uploads/Desert-300x225.jpg" width="300" height="225" /></a>

正如您所看到的,它包含两个带链接的图像。我想从

开始选择两个子串
<a 

结束于

/a>

所以它包含图像。

我最初的正则表达式是:

<a.+<img.+\/a>

这会抓取子字符串,但没有换行符只会看到一个匹配而不是两个匹配。

对于简单的图像,我发现了一个更强大的正则表达式,即使没有换行符也可以找到两个图像:

<[^<]+? \/>

我似乎无法弄清楚如何调整此正则表达式以包含链接标记。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

是的,正则表达式对于一些不匹配的东西来说有点棘手,试试看:

preg_match_all(',<a(([^<]|<[^/]|</[^a]|</a[^>])+)</a>,', $a, $matches);
print_r($matches[0]);