首页 > 这段正则PHP程序为什么崩溃了?

这段正则PHP程序为什么崩溃了?

<?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的运行环境


如果你要取 <style> 之间的值 </style> 那注意应该是这样写 /<style>([^<]+)<\/style>/is
括号要包住加号。你这样的写法,不是正确的正则写法,并不知道会发生什么。

【热门文章】
【热门文章】