我需要通过找到第一个字符来拆分字符串。最快的写法是什么?
字符串示例:
$string = 'Some text here| some text there--and here|another text here';
预期结果:
$new_string = 'Some text here';
这是一个解决方案,我有。有没有更有效的方法来做到这一点?
$explode = explode('|', $string);
$new_string = explode[0];
使用strpos()
和substr()
。Strpos()
一旦找到第一个匹配项就会返回,而explode()
必须遍历整个字符串。
使用strstr()
:
strstr($string, "|", true);
将返回所有内容,直到第一个管道 (|)。
$string = 'Some text here| some text there--and here|another text here';
$string = substr($string, 0, strpos($string,'|'));
print $string;
编辑:使用 strstr() 更好。
爆炸可以变成单线
list($first,) = explode('|', $string,2);
但是, strtok 看起来是最简洁的解决方案。
至于效率 - 选择哪种方式来执行这种微不足道的操作根本不重要。
无论处理的数据量如何导致效率低下。理智的程序员会不惜一切代价避免处理大量数据。从效率的角度来看,其他任何事情都是完全垃圾。
最好搭配:
$first = strtok($string, '|');
如果你喜欢,你可以去和爆炸:
$explode = explode('|', $string, 1);
也strpos()
,substr()
并且strstr()
对此有好处。