php - 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
解决方案
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)
推荐阅读
- ios - Flutter 应用程序 - 错误,Xcode **构建失败**
- mysql - 使用当前时间戳重命名数据库的 bash 脚本
- c# - 为什么 Visual Studio (2019) 在 LogCritical 上中断
- sql - Derby 数据库在返回值时附加空间
- windows - [已解决]服务恢复“运行程序”不起作用
- botframework - Bot Framework -“无法找到具有知识库 ID 的 QnA Maker 服务...”错误
- qt5 - 在嵌入式 Linux 上禁用 QtQuick2 应用程序的 HDMI 输出
- excel - 如何多次检查相同的分隔符?
- regex - Python Regex - 解析字符串并用逗号和美元分割
- java - 素数之和。无论我在哪里将 long 转换为 int,我的素数总和都会导致内存堆