我需要通过找到第一个字符来分割字符串。编写它的最快方法是什么?
字符串示例:
$string = 'Some text here| some text there--and here|another text here';
预期结果:
$new_string = 'Some text here';
这是一个解决方案,我有。有没有更有效的方法呢?
$explode = explode('|', $string);
$new_string = explode[0];
答案 0 :(得分:2)
使用strpos()
和substr()
。 Strpos()
会在找到第一个匹配项后立即返回,而explode()
必须遍历整个字符串。
答案 1 :(得分:2)
使用strstr()
:
strstr($string, "|", true);
将返回所有内容,直到第一个管道(|)。
答案 2 :(得分:1)
$string = 'Some text here| some text there--and here|another text here';
$string = substr($string, 0, strpos($string,'|'));
print $string;
编辑:使用strstr()更好。
答案 3 :(得分:1)
爆炸可以变为单行
list($first,) = explode('|', $string,2);
然而,strtok看起来最简洁的解决方案。
至于效率 - 根本不重要,选择执行这种可忽略不计的操作的方式。
来自处理数据的数量的效率低下。理智的程序员会避免不惜任何代价处理大量数据。从效率的角度来看,无论其他什么都是重要的垃圾。
答案 4 :(得分:0)
最好的选择是:
$first = strtok($string, '|');
如果你愿意,你可以去爆炸:
$explode = explode('|', $string, 1);
strpos()
,substr()
和strstr()
对此也有好处。