从字符串[PHP]中删除周围的脚本标记

时间:2017-03-06 15:05:39

标签: php regex replace preg-replace

让我们说我在PHP中有这样的字符串:

'<script type="text/javascript">
0jiaowdnalwdnijkawd 90janolaw
</script>'

如何从此字符串中剥离环绕脚本标记?我知道如何使用正则表达式进行查找和替换,但这使得我的正则表达式非常低效,因为我的正则表达式技能达不到标准。

我唯一需要的是:

'0jiaowdnalwdnijkawd 90janolaw'

我已尝试使用strip_tags(),但这样会出错,并且无法正常运行。

3 个答案:

答案 0 :(得分:1)

以下正则表达式(使用positive lookahead / lookbehind应该这样做:

$reg = '/(?s)(?<=">\n).*?(?=<\/script>)/';
$str = '<script type="text/javascript">
0jiaowdnalwdnijkawd 90janolaw
</script>';
preg_match_all($reg, $str, $matches);
print_r($matches);

参见 regex demo / explanation

PHP demo

result = a + b;

答案 1 :(得分:1)

如下:

$returnValue = preg_replace('#<script[^>]*>([^<]+)</script>#', '$1', $string);

答案 2 :(得分:1)

试试这个(...)|(...)。有关完整说明,请查看此https://regex101.com/r/88NrTa/2

正则表达式获得两个捕获组,第一个对您没用(它捕获html标记的名称),但第二个捕获标记之间的文本。因此,要获得文本,您必须获得第二个捕获组(纯正则表达式中的<(\w+).*>\s*(.*)\s*<\/\1>)。

如果您不想在PHP中执行此操作,那么该解决方案看起来并不错:PHP regex groups captures