PHP在<script type =“text / javascript”> </script>

时间:2017-10-30 13:20:03

标签: php

我试图获取内容是什么是javascript脚本标记。

<script type="text/javascript"> [CONTENT HERE] </script>

目前我有这样的事情:

$start = preg_quote('<script type="text/javascript">', '/');
$end = preg_quote('</script>', '/');

preg_match('/ '.$start. '(.*?)' .$end.' /', $test, $matches);

但是当我对它进行vardump时,它是空的

3 个答案:

答案 0 :(得分:1)

请尝试以下方法:

$test = '<script type="text/javascript"> [CONTENT HERE] </script>';
$start = preg_quote('<script type="text/javascript">', '/');
$end = preg_quote('</script>', '/');

preg_match("/$start(.*?)$end/", $test, $matches);

var_dump($matches);

输出:

array (size=2)
  0 => string '<script type="text/javascript"> [CONTENT HERE] </script>' (length=56)
  1 => string ' [CONTENT HERE] ' (length=16)

问题实际上是/

preg_match之前和之后的空格

答案 1 :(得分:0)

您的正则表达式要求在脚本开始标记之前有空格:

'/ '

当我将该空间添加到数据时,代码工作正常:

<?php
$test = ' <script type="text/javascript"> [CONTENT HERE] </script> ';
$matches = [];

$start = preg_quote('<script type="text/javascript">', '/');
$end = preg_quote('</script>', '/');

preg_match('/ '.$start. '(.*?)' .$end.' /', $test, $matches);

print_r($matches);
?>

'/ '更改为'/'也有效。

...但是,您应该avoid regular expressions when processing HTMLuse a real parser instead

答案 2 :(得分:0)

另一种方法是使用strip_tags代替......

$txt='<script type="text/javascript"> [CONTENT HERE] </script>';
echo strip_tags($txt);

输出

 [CONTENT HERE]