gpt4 book ai didi

php - 为什么这个php正则表达式程序崩溃

转载 作者:行者123 更新时间:2023-12-02 04:52:34 25 4
gpt4 key购买 nike

here is the code

 <?php 
//here is the string
$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;
}
echo $str;
?>

like the code i write,the php program crash! But when i change the code "/([^<])+</style>/is" to "/[^<]+</style>/is" ,it can run again,Why?I use xampp.

最佳答案

你的正则表达式的问题是你捕获了除 < 之外的所有内容。一次,但您通过使用导致丑陋的正则表达式操作的组重复此操作多次(这不应该崩溃,但您的性能会很丑陋)。

Regular expression visualization

所以,你可以改变这个:

<style>([^<])+<\/style>

<style>([^<]+)<\/style>

上述更改将通过重复模式然后捕获内容来改进正则表达式,我猜您想这样做。

Regular expression visualization

关于php - 为什么这个php正则表达式程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com