让我们说我在PHP中有这样的字符串:
'<script type="text/javascript">
0jiaowdnalwdnijkawd 90janolaw
</script>'
如何从此字符串中剥离环绕脚本标记?我知道如何使用正则表达式进行查找和替换,但这使得我的正则表达式非常低效,因为我的正则表达式技能达不到标准。
我唯一需要的是:
'0jiaowdnalwdnijkawd 90janolaw'
我已尝试使用strip_tags()
,但这样会出错,并且无法正常运行。
答案 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);
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。