相当ピンポイントな関数ですが、連番ファイル名の続きを作る場合などは使えるでしょう。
// 文字列の左側の共通部分を得る 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; }
左側一致を右側一致に変更しました。
使いどころはさらに限られそうな気がしますが、拡張子の抽出などに使えそうですね。