我正在使用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);
直到我删除了克拉(^)字符才行。我认为克拉符合一条线的起点。为什么导致我的比赛失败?
答案 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