我想根据以下正则表达式在网页上获取匹配项:(.*) 我在 regexpal.com(一个在线正则表达式测试工具)上对其进行了测试,它工作正常。但是,当我在 php 中使用它时,我找不到任何匹配项。我在 php 中使用的语句是
preg_match_all("/<a href=\"\/title\/.*\/\">(.*)<\/a>/", $content, $matches);
我检查了 $content,它是正确的。那么我的陈述有什么问题吗?谢谢!
我想根据以下正则表达式在网页上获取匹配项:(.*) 我在 regexpal.com(一个在线正则表达式测试工具)上对其进行了测试,它工作正常。但是,当我在 php 中使用它时,我找不到任何匹配项。我在 php 中使用的语句是
preg_match_all("/<a href=\"\/title\/.*\/\">(.*)<\/a>/", $content, $matches);
我检查了 $content,它是正确的。那么我的陈述有什么问题吗?谢谢!
拜托,拜托...看在上帝的份上,不要将处理 URL 或 HTML 的正则表达式包装在 / 中。你必须到处逃避它。它是可怕的。看这里:
preg_match_all('~<a href="/title/[^">]+/">(.*?)</a>~si', $content, $matches);
有更多方法可以改善这一点,但应该这样做。
希望能帮助到你。
?
您需要通过添加>>使您的正则表达式模式变得懒惰(非贪婪)
preg_match_all("/<a href=\"\/title\/.*?\/\">(.*?)<\/a>/", $content, $matches);
preg_match_all("/<a href\=\"\/title\/.*\/\">(.*?)<\/a>/", $content, $matches);
我会尝试:
preg_match_all('/<a href\=".title.*">(.*?)<\/a>/', $content, $matches);
为简洁起见。