【发布时间】:2013-11-30 16:24:49
【问题描述】:
我有 php 正则表达式来查找标签并从 html 页面中提取 css 地址
'/<link.*?href\s*=\s*["\']([^"\']+)[^>]*>.*?\/>/i'
但是效果不好。你能帮我修改一下这段代码吗?
【问题讨论】:
-
您不应该使用正则表达式来解析 HTML。请改用 DOM。
我有 php 正则表达式来查找标签并从 html 页面中提取 css 地址
'/<link.*?href\s*=\s*["\']([^"\']+)[^>]*>.*?\/>/i'
但是效果不好。你能帮我修改一下这段代码吗?
【问题讨论】:
也许
'/<link .*?(href=[\'|"](.*)?[\'|"]|\/?\>)/i'
然后您可以使用$2访问链接
【讨论】:
正则表达式查找所有样式表的 href 可能是一项棘手的任务。您应该考虑使用一些 PHP HTML 解析器来获取此信息。
您可以阅读 this article 以获取更多信息,然后尝试此代码。
// Retrieve all links and print their HREFs
foreach($html->find('link') as $e)
echo $e->href . '<br>';
// Retrieve all script tags and print their SRCs
foreach($html->find('script') as $e)
echo $e->src . '<br>';
PS:请记住,您的脚本标签可能不包含 src,然后它将打印空字符串。
【讨论】:
并不是说这比其他答案更好,但是以防万一您想查看它,我已经更改了您的正则表达式,使其可以按预期工作:
'/<link.*?href\s*=\s*["\']([^"\']+?)[\'"]/i'
【讨论】: