我需要在PHP中使用正则表达式,它可以提取所有脚本标记链接( src 属性)。
我已经创建了这个正则表达式,我创建它来提取脚本src值但是我无法让它只能在 head 部分找到
/<script [^>]*src=["|\']([^"|\']+(\.js))/i
希望有人会在发送可以正常工作的新正则表达式之前检查并测试。
答案 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