获取<a></a>正则表达式中的所有内容

时间:2013-02-20 14:02:01

标签: php regex

我有以下代码。我想把所有内容都放在“a”标签里面。目前正在运作。我得到“第一”和“第二”作为输出。打开“a”标签并关闭“a”标签在同一行。

$v = 'this is test 
<a href="products.html">first</a> 
<a>second</a;
preg_match_all("#<a\b[^>]*>(.*?)</a>#", $v, $foo);
echo implode("\n", $foo[1]);

但如果我按以下方式写作,

$v = '<a href="products.html">first
</a> 
preg_match_all("#<a\b[^>]*>(.*?)</a>#", $v, $foo);
echo implode("\n", $foo[1])';

这里我将结束“a”标签移动到第二行,现在它没有给我任何输出。有谁知道如何让它发挥作用?

1 个答案:

答案 0 :(得分:1)

至于您遇到的问题,这是因为您需要启用单行选项(s):

preg_match_all("#<a\b[^>]*>(.*?)</a>#s", $v, $foo);

否则.与换行符不匹配。

选项from the documentation的说明:

  

如果设置了此修改器,则模式中的点元字符匹配   所有字符,包括换行符。没有它,排除了换行符。

但是你最好不要使用正则表达式。 See this question for other approaches in PHP