相当ピンポイントな関数ですが、連番ファイル名の続きを作る場合などは使えるでしょう。
// 文字列の左側の共通部分を得る
function getCommonStringLeft($array) {
$max = count($array);
if ($max==0) return FALSE;
$similar = $array[0];
for ($i=1; $i<$max; $i++) {
for ($j=mb_strlen($similar); $j>0; $j--) {
$similar = mb_substr($similar, 0, $j);
if ($similar===mb_substr($array[$i], 0, $j)) {
break;
}
}
if ($j==0) return '';
}
return $similar;
}// 使用例
$files = array(
'mifumin1.txt',
'mifumin2.txt',
'mifumin3.txt',
'mifumi-4.txt',
);
$left = getCommonStringLeft($files);
// mifumiが表示される
echo $left;せっかくなので右側も
// 文字列の右側の共通部分を得る
function getCommonStringRight($array) {
$max = count($array);
if ($max==0) return FALSE;
$similar = $array[0];
for ($i=1; $i<$max; $i++) {
for ($j=mb_strlen($similar); $j>0; $j--) {
$similar = mb_substr($similar, mb_strlen($similar)-$j, $j);
if ($similar===mb_substr($array[$i], mb_strlen($array[$i])-$j, $j)) {
break;
}
}
if ($j==0) return '';
}
return $similar;
}左側一致を右側一致に変更しました。
使いどころはさらに限られそうな気がしますが、拡張子の抽出などに使えそうですね。