Mat*_*iva 3 php regex string algorithm performance
我在Perl之后认识了PHP,所以当我第一次找到preg_*函数时,我基本上只使用了那些.后来我读到str_replace()在处理文字文本时更快.所以我的问题是,不能preg_replace()像str_replace()搜索模式不使用特殊字符那样有效吗?也许只是分析模式,在正则表达式和纯文本算法之间进行选择?
理论上是的,你是对的.PHP团队可能会跳过preg_replace分析传入的模式,然后使用代码,str_replace如果它没有看到任何元字符.假设分析不太重,这可能会产生更好的性能结果.
但是,PHP源代码(即用于实现PHP的代码)的组织方式并不适合这种共享.PHP(在某些方面)不是一种完整的语言,而是更多的模块集合.
因此,最初PHP小组选择远离这种交叉模块授粉.此时,更改preg_replace功能以进行此类分析可能会破坏大量代码,并且性能改进将是微不足道的.
最后,分析本身是一个比你想象的更难解决的问题.告诉我,这种模式
'/123/'
Run Code Online (Sandbox Code Playgroud)
意思是我应该搜索文字文本
123
Run Code Online (Sandbox Code Playgroud)
或文字文本
/123/
Run Code Online (Sandbox Code Playgroud)
对于任何一种解释都很容易提出令人信服的论据,这引起了对使用该函数的额外混淆.
理论上一个有趣的想法,但在实践和PHP世界的上下文中,它产生的问题远远多于它解决的问题.