用于解析html的php正则表达式

时间:2010-12-22 19:01:51

标签: php html regex

我需要一些帮助来解析一个html,从http://开始提取所有内容,包含“abc”,直到第一次出现“或”或空格。

我有一些这样的正则表达式/http:\ / / / abc(。*)\“/但它运作不佳:\

有什么想法吗? :)

P.S。抱歉英语不好,这不是我的自然语言;)

3 个答案:

答案 0 :(得分:5)

StackOverflow倾向于使用HTML Document Parser而不是正则表达式来解析HTML。

然而,话虽如此,如果你只想要一个恰好是HTML的字符串中的URL,我仍然相信正则表达式可以胜任这项工作。

尝试preg_match_all

preg_match_all("/http:\/\/[^\s'\"]*abc[^\s'\"]*/", $string, $matches);

答案 1 :(得分:1)

使用解析器而不是正则表达式。

RegEx match open tags except XHTML self-contained tags

答案 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 );
相关问题