如果你知道长度是固定的,你可以使用 substr。如果没有,您可以先使用 strpos 。下面给了我 1-2 ms 用于固定长度的“substr”方法,4ms 用于“shift-implode”方法,以及 1-2 ms 用于可变长度“substr”方法。(如果我让数组更大,它会耗尽内存,但你明白了。)
$loops=1000000;
$filename="1347020478_Workbook1 12.19.19.csv";
for ($i=0;$i<$loops;$i++){
$fn[$i]=$filename;
}
$start1=time();
for ($i=0;$i<$loops;$i++){
$newname=substr($fn[$i],11);
}
$end1=time();
echo $newname." time=".($end1-$start1)."<br><br>";
$filename="1347020478_Workbook1 12.19.19.csv";
for ($i=0;$i<$loops;$i++){
$fn[$i]=$filename;
}
$start1=time();
for ($i=0;$i<$loops;$i++){
$original_filename = explode('_', $fn[$i]);
$timestamp = array_shift($original_filename);
$original_filename = implode('_', $original_filename);
}
$end1=time();
echo $original_filename." time=".($end1-$start1)."<br><br>";
$filename="1347020478_Workbook1 12.19.19.csv";
for ($i=0;$i<$loops;$i++){
$fn[$i]=$filename;
}
$start1=time();
for ($i=0;$i<$loops;$i++){
$st=strpos($fn[$i],"_");
$newname=substr($fn[$i],$st+1);
}
$end1=time();
echo $newname." time=".($end1-$start1);