PHP正则表达式在头部查找脚本

时间:2015-03-25 19:31:28

标签: php html regex

我需要在PHP中使用正则表达式,它可以提取所有脚本标记链接( src 属性)。

我已经创建了这个正则表达式,我创建它来提取脚​​本src值但是我无法让它只能在 head 部分找到

/<script [^>]*src=["|\']([^"|\']+(\.js))/i

希望有人会在发送可以正常工作的新正则表达式之前检查并测试。

1 个答案:

答案 0 :(得分:2)

/html/head/script/@src

容易腻。显然正则表达式,它的xpath。当您尝试使用正则表达式解析HTML时,往往会发生Not good things。幸运的是,一个功能更强大的HTML解析器附带了PHP DOM extension - 由loadHTML()loadHTMLFile()方法公开。

这使您可以使用所有精彩的DOM方法以及XPath来查询文档。


实施例

$html = <<<'HTML'
<html>
<head>
    <script src="foo.js"></script>
    <script src="bar.js"></script>
</head>
<body>
    <script src="baz.js"></script>
</body>
</html>
HTML;

$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

foreach ($xpath->query('/html/head/script/@src') as $src) {
    echo $src->value, "\n";
}

输出:

foo.js
bar.js