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



假设我在PHP中有一个这样的字符串:

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

我将如何从此字符串中剥离环绕脚本标签?我知道如何查找和替换正则表达式,但这给我留下了一个效率非常低的正则表达式,因为我的正则表达式技能达不到标准。

我唯一需要的是:

'0jiaowdnalwdnijkawd 90janolaw'

我试过使用strip_tags()但这个意志是错误的,不能像我想要的那样工作。

如下:

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

以下正则表达式(使用积极的前瞻/后视)应该可以做到:

(?s)(?<=">n).*?(?=</script>)

查看正则表达式演示/解释

PHP(演示)

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

试试这个<(w+).*>s*(.*)s*</1>。有关完整的解释,请查看此 https://regex101.com/r/88NrTa/2。

正则表达式有两个捕获组,第一个对您没有用(它捕获 html 标签的名称),但第二个捕获标签之间的文本。所以要获得文本,你必须得到第二个捕获组(2在纯正则表达式中)。

如果你不想在PHP中这样做,这个解决方案看起来还不错:PHP正则表达式组捕获。

最新更新