php字符串匹配相关函数性能对比
常用的字符串匹配的方法(包含中文的模式)
1,mb_strstr 或者不区分大小写 mb_stristr,判断一个字符串是否包含另外一个字符串
2,mb_strpos或者不区分大小写 mb_stripos,返回一个字符串在另外一个字符串第一次出现的位置
3,preg_match 字符串是否匹配
这里强烈推荐一波字符串匹配的算法,很全很实用: 字符串匹配算法.
示例代码
性能比对
函数 | 循环次数 | 字符串长度 | 耗时(ms) |
---|---|---|---|
mb_strpos | 1000 | 1000 | 4 |
mb_stripos | 1000 | 1000 | 183 |
mb_strstr | 1000 | 1000 | 0 |
mb_stristr | 1000 | 1000 | 185 |
preg_match | 1000 | 1000 | 0 |
– | – | – | – |
mb_strpos | 10000 | 1000 | 41 |
mb_stripos | 10000 | 1000 | 1756 |
mb_strstr | 10000 | 1000 | 7 |
mb_stristr | 10000 | 1000 | 1840 |
preg_match | 10000 | 1000 | 9 |
– | – | – | – |
mb_strpos | 1000 | 10000 | 34 |
mb_stripos | 1000 | 10000 | 1563 |
mb_strstr | 1000 | 10000 | 2 |
mb_stristr | 1000 | 10000 | 1652 |
preg_match | 1000 | 10000 | 2 |
– | – | – | – |
mb_strpos | 10000 | 10000 | 362 |
mb_stripos | 10000 | 10000 | 16019 |
mb_strstr | 10000 | 10000 | 20 |
mb_stristr | 10000 | 10000 | 16663 |
preg_match | 10000 | 10000 | 30 |
总结
通过上面的数据可以看出,如果要匹配大小写的话,php自带的字符串操作函数的性能都不如正则匹配preg_match ,而且性能差距很大,如果不需要大小写都匹配的话,用mb_strstr效果会更好,当然如果一定要返回位置,那么只能用mb_strpos函数了