使用克拉时,preg_match_all不匹配(^)

时间:2011-05-30 19:19:26

标签: php regex preg-match-all

我正在使用preg_match_all在HTML文件中查找网址。 URL始终显示在行的开头,没有前导空格,如下所示:

<A HREF="/link/to/here"><strong>Next</strong></A>

我用它来匹配它:

preg_match_all('|^<A HREF="(?<url>.*?)"><strong>Next</strong>|', $html, $url_matches);

直到我删除了克拉(^)字符才行。我认为克拉符合一条线的起点。为什么导致我的比赛失败?

2 个答案:

答案 0 :(得分:4)

您必须添加m修饰符:

preg_match_all('|^<A HREF="(?<url>.*?)"><strong>Next</strong>|m', $html, $url_matches);

然后^在一行的开头匹配,否则它只会在整个字符串的开头匹配。

更多信息:http://php.net/manual/en/reference.pcre.pattern.modifiers.php

答案 1 :(得分:3)

^匹配字符串开头而不是行首。使用m(“多行”)修饰符://m