php正则表达式检查第一个char优化

时间:2015-06-10 05:34:33

标签: php regex

我听说正则表达式很慢。 所以我想知道哪个代码会更有效率,因为我正在寻找的模式以arobase开头:

这一个?

if(preg_match('!^@([a-zA-Z0-9_]+):([a-zA-Z0-9]+)$!', $subject, $match)){
    // do something
}

还是这个?

if(
    '@' === substr($subject, 0, 1) && 
    preg_match('!^@([a-zA-Z0-9_]+):([a-zA-Z0-9]+)$!', $subject, $match)
){
    // do something
}

我想我会运行一些自定义测试...

1 个答案:

答案 0 :(得分:1)

这是不好的优化。如果您将使用分析器并仅优化需要优化的代码,那就更好了。

但是这个代码可以通过字符串数组访问技巧进行优化。

if('@' === $subject[0] && preg_match('!^@([a-zA-Z0-9_]+):([a-zA-Z0-9]+)$!', $subject, $match)){
    // do something
}