我需要一些帮助来解析一个html,从http://开始提取所有内容,包含“abc”,直到第一次出现“或”或空格。
我有一些这样的正则表达式/http:\ / / / abc(。*)\“/但它运作不佳:\
有什么想法吗? :)
P.S。抱歉英语不好,这不是我的自然语言;)
答案 0 :(得分:5)
StackOverflow倾向于使用HTML Document Parser而不是正则表达式来解析HTML。
然而,话虽如此,如果你只想要一个恰好是HTML的字符串中的URL,我仍然相信正则表达式可以胜任这项工作。
preg_match_all("/http:\/\/[^\s'\"]*abc[^\s'\"]*/", $string, $matches);
答案 1 :(得分:1)
使用解析器而不是正则表达式。
答案 2 :(得分:0)
如果您只想提取网址,那么regexen是一个不错的选择。你不需要进入解析器世界。
如果你有类似unix的命令工具,你可以非常简单地估算它(假设每行一个网址),并且有两遍:
grep http myfile.html | grep abc
您可以类似地使用preg_grep()
。
preg_match_all ('/http:[^"\' ]+/', $html, $urls);
# $urls contains all the urls from your document
$abc_urls = preg_grep( '/abc/', $urls );