【发布时间】:2013-09-09 22:01:54
【问题描述】:
我正在尝试读取 HTML 文件并捕获与特定 URL 模式匹配的所有锚标记,以便在另一个页面上显示这些链接。模式如下所示:
https://docs.google.com/file/d/aBunchOfLettersAndNumbers/edit?usp=drive_web
我对 RegEx 不满意。我已经尝试了很多东西,并在 Stack Overflow 上阅读了很多答案,但我没有找到正确的语法。
这是我现在拥有的:
preg_match ('/<a href="https:\/\/docs.google.com\/file\/d\/(.*)<\/a>/', $file, $matches)
当我在一个带有两个匹配锚标记的 HTML 页面上进行测试时,第一个结果包括第一个和第二个匹配以及介于两者之间的所有内容,而第二个结果包括第一个匹配的一部分、第二个匹配的一部分以及所有内容介于两者之间。
虽然我很乐意捕获匹配的锚标记以及内部 HTML,但如果我可以生成一个多维数组,其中包含每个匹配的锚标记的 HREF 属性以及匹配的内部 HTML (所以我可以自己格式化链接,而不必使用更多的正则表达式来删除不需要的属性)。我会为此使用 preg_match_all 吗?那会是什么样子?
我是不是走在正确的道路上,还是应该使用 DOM 和 XPath 查询来查找这些东西?
谢谢。
【问题讨论】:
-
你应该完全使用 DOM。
-
正则表达式不是魔杖,您可以在碰巧涉及字符串的每个问题上挥手。用正则表达式解析 HTML 只会让人心痛和痛苦。
标签: php regex html-parsing