php – preg_match()和preg_replace()慢吗?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – preg_match()和preg_replace()慢吗?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在 PHP编码一段时间,我一直在阅读,你只能使用PReg_match和preg_replace,因为它会降低性能.为什么是这样?在一个文件中使用20个preg_matches而不是使用另一个PHP函数真的很糟糕.
正如麦克·布兰特(Mike brant)在答案中所说:如果您需要它们,使用任何preg_ *函数没有任何问题.
你想知道一个文件是否有20个preg_match调用一个好主意,老实说:我说这太多了.我经常说:“如果您的问题解决方案依赖于任何给定时间的3位以上的正则表达式,那么您就是问题的一部分.我偶尔犯了我自己的咒语.

如果您使用20个preg_match调用,那么您可以通过仔细观察实际的正则表达式来减少该数字的几率.正则表达式,特别是PErl正则表达式,非常强大,非常值得了解它们的时间.它们往往更慢的原因只是因为正则表达式必须被解析,并且被“翻译”到相当多的分支和循环在一个低水平.如果你想用一个大写字符替换所有小写字母,那么你可以使用一个正则表达式,但是在PHP中,它将如下所示:

preg_replace('/a/','A',$string);

看看表达式,第一个参数:它是作为参数传递的字符串.将解析此字符串(解析时,分隔符被检查,创建匹配字符串,然后重复字符串,每个字符与模式(在这种情况下为a)进行比较,如果子字符串匹配,则替换它.
看起来像一个支票,特别是考虑到最后一步(比较子串和替换匹配)是我们真正想要的.

$string = str_replace('a',$string);

只是这样,没有在正则表达式被解析和验证时执行额外的检查.
不要忘记,preg_match还构造了一个匹配的数组,构造数组也不是免费的.

简而言之:正则表达式更慢,因为表达式被解析,验证,最终被转换成一组简单的低级指令.

请注意,在某些情况下,人们使用爆炸和内爆来进行字符串操作.这也创建了一个不是空闲的数组.考虑到你之后不久就爆发了相同的阵列.也许另一个选择是更可取的(在某些情况下,preg_replace可以在这里更快).基本上:正则表达式需要额外的处理,简单的字符串函数不需要.但是当有疑问的时候,只有一种方法是绝对确定的:设置一个测试脚本

脚本宝典总结

以上是脚本宝典为你收集整理的php – preg_match()和preg_replace()慢吗?全部内容,希望文章能够帮你解决php – preg_match()和preg_replace()慢吗?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。