如何在PHP中从带有preg_match_all的字符串返回JavaScript?

如何在PHP中从带有preg_match_all的字符串返回JavaScript?,php,regex,preg-match-all,Php,Regex,Preg Match All,我想用preg_match_all从字符串中读取JavaScript的所有内容 结果现在也包含脚本标记。 我想排除这个标签 我的示例和示例代码。Regex是解析XML/HTML的错误工具。您应该改用DOM解析器。XPath表达式是一种专门用于解析DOM结构的语言 $html = <<<_EOS_ <script>alert("Hallo Welt 1");</script> <div>Hallo Welt</div> <sc

我想用preg_match_all从字符串中读取JavaScript的所有内容

结果现在也包含脚本标记。 我想排除这个标签

我的示例和示例代码。

Regex是解析XML/HTML的错误工具。您应该改用DOM解析器。XPath表达式是一种专门用于解析DOM结构的语言

$html = <<<_EOS_
<script>alert("Hallo Welt 1");</script>
<div>Hallo Welt</div>
<script type ="text/javascript">alert("Hallo Welt 2");</script>
<div>Hallo Welt 2</div>
<script type ="text/javascript">
              alert("Hallo Welt 2");
</script>
_EOS_;

$doc = new DOMDocument();
$doc->loadHTML("<!DOCTYPE html><html>$html</html>");
$xpath = new DOMXPath($doc);
$scripts = $xpath->query('//script/text()');

foreach ($scripts as $script)
  var_dump($script->data);

最有可能的是经典正则表达式不是您的工具。请在内部添加一个真正的捕获组…并使用结果集[1]。感谢这一切实可行的解决方案…我认为这是最好的方法。。。
$html = <<<_EOS_
<script>alert("Hallo Welt 1");</script>
<div>Hallo Welt</div>
<script type ="text/javascript">alert("Hallo Welt 2");</script>
<div>Hallo Welt 2</div>
<script type ="text/javascript">
              alert("Hallo Welt 2");
</script>
_EOS_;

$doc = new DOMDocument();
$doc->loadHTML("<!DOCTYPE html><html>$html</html>");
$xpath = new DOMXPath($doc);
$scripts = $xpath->query('//script/text()');

foreach ($scripts as $script)
  var_dump($script->data);