我有以下代码。我想把所有内容都放在“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”标签移动到第二行,现在它没有给我任何输出。有谁知道如何让它发挥作用?
答案 0 :(得分:1)
至于您遇到的问题,这是因为您需要启用单行选项(s
):
preg_match_all("#<a\b[^>]*>(.*?)</a>#s", $v, $foo);
否则.
与换行符不匹配。
选项from the documentation的说明:
如果设置了此修改器,则模式中的点元字符匹配 所有字符,包括换行符。没有它,排除了换行符。
但是你最好不要使用正则表达式。 See this question for other approaches in PHP