佚名通过本文主要向大家介绍了正则表达式程序,微信小程序正则表达式,微信小程序正则,图像复原正则化程序,小程序正则等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:这段正则PHP程序为什么崩溃了?
描述:
解决方案1:
描述:
<?php
$str ="<style>
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
.a{color: red;}
</style>";
$str=ycs($str);
function ycs($str){
$str = preg_replace_callback("/<style>([^<])+<\/style>/is", function($matched){
return "abc";
}, $str);
return $str;
}
?>
运行是崩溃了,经过测试,,只要把
/<style>([^<])+<\/style>/is
改成
'/<style>[^<]+<\/style>/is',
也就是去掉括号,就不崩溃了,为什么会这样,是PHP性能的问题吗???我用的是xampp的运行环境
解决方案1:
如果你要取 <style>
之间的值 </style>
那注意应该是这样写 /<style>([^<]+)<\/style>/is
括号要包住加号。你这样的写法,不是正确的正则写法,并不知道会发生什么。