我试图获取内容是什么是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时,它是空的
答案 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 HTML和use a real parser instead。
答案 2 :(得分:0)
另一种方法是使用strip_tags
代替......
$txt='<script type="text/javascript"> [CONTENT HERE] </script>';
echo strip_tags($txt);
输出
[CONTENT HERE]