長さが固定されていることがわかっている場合は、substr を使用できます。そうでない場合は、最初に strpos を使用できます。以下では、固定長の「substr」メソッドで 1 ~ 2 ミリ秒、「shift-implode」メソッドで 4 ミリ秒、可変長の「substr」メソッドで 1 ~ 2 ミリ秒が得られます。(配列を大きくするとメモリ不足になりますが、おわかりでしょう。)
$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);