高效的PHP方法来返回大量行中带有多个分隔符的字符串的第一部分。

问题描述 投票:0回答:1

这是一个常见的问题,但从性能的角度来问。

我们如何才能在找到空格或*之前返回字符串的第一部分?在单行代码中,我看到了许多方法,如strstr,strtok,explode等,但他们都只支持一个定界符,如果我没有错。

我把日期写成文本,比如:

29-Apr-2021*  
02-09-2019 12:00:00 

将最后一部分从*或空格中剥离出来返回 29-Apr-2021 and 02-09-2019

我有大约5000行要循环处理,每行有5个日期字段要修正,所以我需要最快的方法来实现。我读到了preg_split,但我想这将会很慢。

php string split delimiter
1个回答
0
投票

不知道这是不是最快的方法,但你不必使用preg_split。你可以使用 strtok 支持多个定界符。

请注意,您可以在 token 参数中放入多个 token。当找到参数中的任何一个字符时,字符串将被标记化。

$strings = [
    "29-Apr-2021*",
    "02-09-2019 12:00:00"
];

foreach ($strings as $str) {
    echo strtok($str, " *") . PHP_EOL;
}

输出参数

29-Apr-2021
02-09-2019

例子

© www.soinside.com 2019 - 2024. All rights reserved.