我需要在一段带有正则表达式的代码中找到所有 css 引用
假设我有:
<link rel="stylesheet" type="text/css" href="mystyle.css">
比赛结果应mystyle.css
目前,我只有与整个参考匹配的~href=''.*'.css.*''~
,因此不行。
Karthik的回答是"几乎"正确的。
我在他的示例中做了一个"小"更改,现在还捕获了以下网址:
http://blah.com/style.css
修改后的正则表达式如下:
~(?<=href=")[^"]+'.css~
您可以使用
以下内容:
~(?<=href=")[^."]+'.css~
查看演示
没有充分的理由为此使用正则表达式。将 HTML 文件作为 DOM 文档读取,并使用 Xpath 提取样式表引用:
<?php
$doc = new DOMDocument();
$doc->loadHTMLFile("test.html");
$xpath = new DOMXpath($doc);
$stylesheets = $xpath->query("//link[@rel='stylesheet']/@href");
if ($stylesheets->length == 0) {
echo "nothing found!'n";
} else {
foreach ($stylesheets as $stylesheet) {
echo "found stylesheet: " . $stylesheet->nodeValue . "'n";
}
}
?>
也就是说,对于文档中rel
属性stylesheet
的每个link
元素(//link
部分)([@rel='stylesheet']
),提取href
属性(/@href
)。