日本語対応basename関数(PHP)
PHPのbasename関数が日本語ファイル名対応してなくてお困りのあなたに。
こんな泥臭いプログラムはダメよ、というとっても恥ずかしい代替関数をお送りします。
恥ずかしいので見ちゃイヤ〜ン
<?php //-------------------------------------------------- //日本語対応basename //-------------------------------------------------- function sBasename ( //パス $sPath ) { $sBase = ''; $sFrags = explode('/', $sPath); $nFrag = count($sFrags); if (0 < $nFrag) { $sBase = $sFrags[$nFrag - 1]; if (mb_strlen($sBase) === 0) { if (1 < $nFrag) { $sBase = $sFrags[$nFrag - 2]; } } } return $sBase; } ?>
お前はパソコンの授業で今日初めてプログラミング書いてみた人間か!
いちおう売りは、引数のパスがファイルではなくディレクトリのときも、元祖basename関数と同様に、ディレクトリ名が取れる点です。
この点が、ネットでググって出てくる皆さんの代替関数だと、満たされていないことが多いです(パスがディレクトリのときは、返り値が空文字列になってしまったり)。
まあ、そんな使い方してるのは僕だけかもしれませんが。