假设我在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正则表达式组捕获。