首页 > 解决方案 > php strtok 替代拆分字符串

问题描述

strtok已被推荐并优于其他功能,例如当字符串必须拆分时爆炸,因为它一次只返回一个片段,每个后续调用都返回下一个片段。

strtok但是在这里,用第二种方式替换(第一种方式)会更好吗?我优先考虑第二个,因为它的编码较少,但不知道大字符串的性能和内存消耗。哪个最好?

$stdt='4-50';    

使用 strtok 的第一种方法

$stdt_cut = strtok( $stdt, '-' );
$stdt_final = strtok( '' );
echo $stdt_final;
//output is 50

使用 substr 和 strstr 的第二种方法

echo substr(strstr($stdt, '-'), 1)
//output is 50

标签: php

解决方案


strstr 的原型是:

string strstr ( string $haystack , mixed $needle [, bool $before_needle = FALSE ] )

和功能

返回 haystack 字符串的一部分,从第一次出现 needle 到 haystack 结束。

所以基于此:$stdt='4-50';
在这一步:strstr($stdt, '-');

你已经有了'-50';所以你可以有效地使用:

substr(strstr($stdt, '-'), 1);

或者

ltrim(strstr($stdt, '-'),'-');

但是在您的情况下,一种非常快速的方法可能是 strpos 被认为比 strstr 消耗更少且速度更快,并且还因为您使用所有相同的 substr:

substr($stdt,strpos($stdt,'-')+1)

推荐阅读