我在招聘流程技能测试期间遇到了以下问题:
假设一个大的随机字符串,例如:
$x = str_shuffle(str_repeat(implode('', range('a', 'z')), 1000000));
查找子字符串的最有效方法是什么?
我想知道答案只是为了了解它。
事先谢谢!
答案 0 :(得分:2)
你可以这样做:
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Note our use of ===. Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
echo "The string '$findme' was not found in the string '$mystring'";
} else {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
}
答案 1 :(得分:2)
您拥有的选项是:
strpos()
,preg_match()
用于正则表达式匹配,stripos()
用于不区分大小写搜索。
正则字符串匹配总是比普通字符串搜索慢。但这是一个比较,考虑PHP的普通安装中的案例性或不敏感的字符串:
此数据来自10000
字符串中的1k
次搜索。
php5-cgi strpos() 27.7 ms
mod_php5 strpos() 30.6 ms
mod_php5 + ZP strpos() 37.2 ms
php5-cgi stripos() 163.6 ms
mod_php5 stripos() 172.8 ms
mod_php5 + ZP stripos() 177.3 ms
php5-cgi preg_match() 72.2 ms