【发布时间】:2011-09-10 00:25:22
【问题描述】:
我已经加载了一个页面的整个 HTML,并且想要检索所有以 http 开头并以 pdf 结尾的 URL。我写了以下不起作用:
$html = file_get_contents( "http://www.example.com" );
preg_match( '/^http(pdf)$/', $html, $matches );
我对正则表达式很陌生,但从我学到的知识来看,^ 标志着模式的开始,$ 标志着模式的结束。我做错了什么?
【问题讨论】:
-
不要用正则表达式解析 HTML。
-
@hakre 他似乎在寻找任何链接,可能是纯文本链接,所以他不想解析 HTML。
-
@Matthieu:在代码示例中,第一行读取完整的 HTML 源代码,第二行运行正则表达式。这不是说他想用正则表达式解析 HTML 吗?你怎么称呼它?
-
@hakre:您将如何搜索常规文本中的 URL?你对 do-not-parse-html-with-regex-thing 是正确的,但是文本节点也可以包含 URL。您无法使用常规解析器提取这些信息。他的做法是完全合理的。
-
@elusive:我不知道 file_get_contents() 只能从 HTML 文档中提取文本节点。
标签: php regex preg-match