反之。人们经常在IMO 上欺骗正则表达式是邪恶的模因。显然preg_match在中已被过度使用php
,但是这样做并不明显(在PHP中)通常是明智的。
我可能会猜到这是使用字符串函数在php领域进行的另一个微优化。有很多有用的东西,它们通常是更好的选择。但是,您不应避开preg_match
多重strpos
和if
连锁。因为事实证明,libpcre通常比PHP执行循环查找字符串替代品的速度更快,例如
最近的一个例子让我意识到,测试字符串是否全部为小写:
if ($string == strtolower($string))
比以下内容更具可读性:
if (!preg_match("/[A-Z]/", $string))
而且您会认为第一个必须更快,因为它是全PHP。但实际上,正则表达式只对字符串进行一次查找,并且一旦发现大写字母就可以中止取反的条件。但是,strtolower()方法对字符串进行了两次查看。首先strtolower()通过遍历每个字母,比较并大写字母,使字符串重复。然后==
再次遍历原件和副本,再次比较它们。
因此,这不是一个明显的情况。客观地说,第一个通常会更快,因为您通常只比较短字符串。但是当务之急是不要盲目假设PHP字符串函数始终建议使用正则表达式。
(我很想对@bobince关于xhtml-regexes 的有趣答案以及最近如何经常以一种非常无益的方式链接它添加另一种怨言。下面更客观的答案被忽略了。)