我正在使用preg_match_all在HTML文件中查找URL。 URL总是出现在行的开头,没有前导空格,如下所示:

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

我用它来匹配它:
preg_match_all('|^<A HREF="(?<url>.*?)"><strong>Next</strong>|', $html, $url_matches);

直到我删除了克拉(^)字符,它才起作用。我以为克拉与一行的开头相符。为什么会导致我的比赛失败?

最佳答案

您必须添加m修饰符:

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

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

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

关于php - 使用克拉(^)时preg_match_all不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6179991/

10-13 02:51
查看更多