PHP正则表达式在head中查找脚本

PHP正则表达式在head中查找脚本,php,html,regex,Php,Html,Regex,我需要在PHP中使用正则表达式,它可以提取所有脚本标记链接(src属性) 我已经有了这个正则表达式,我创建它是为了提取脚本src值,但是我无法让它只在head部分中找到 /]*src=[“\\”]([^“\\”]+(\.js))/i 希望有人在发送一个可以工作的新正则表达式之前检查并测试它 /html/head/script/@src 简单的豌豆。显然不是正则表达式,而是xpath。当您试图用正则表达式解析HTML时,往往会发生这种情况。幸运的是,PHP附带了一个功能更强大的HTML解析器——

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

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

/]*src=[“\\”]([^“\\”]+(\.js))/i

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

/html/head/script/@src
简单的豌豆。显然不是正则表达式,而是xpath。当您试图用正则表达式解析HTML时,往往会发生这种情况。幸运的是,PHP附带了一个功能更强大的HTML解析器——由和方法公开

这使您可以使用所有出色的DOM方法以及查询文档


例子:
不要用正则表达式解析html:谢谢你的评论,但是我特别需要正则表达式来处理这个特殊的场景,我知道它的局限性。谢谢,谢谢你的回答。我特别想要正则表达式,因为我已经在应用程序中使用它了。因此,dom解析器等无法工作。
$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