PHPのbasename関数には、マルチバイトに対応していないという誤解(実際にはロケールの設定をすればマルチバイトでも使える)があったり、不正な文字エンコーディングをチェックしないという課題があったりで、イマイチだなーと思っている方も多いと思います。 そういう方々が、preg_replace(u修飾子つき)やmb_ereg_replaceを用いて代替関数を作成している解説も見かけますが、それではこれら正規表現関数は不正な文字エンコーディングをチェックしているのだろうかという疑問が生じます。 ざっと調べたところ、以下の様な状況のようです。 preg_replace : 不正な文字エンコーディングをチェックしている mb_ereg_replcae : 不正な文字エンコーディングをチェックしていない ここでは、mb_ereg_replaceが不正な文字エンコーディングをチェックしない状況と、そ
![PHPのmb_ereg関数群は不正な文字エンコーディングをチェックしない](https://cdn-ak-scissors.b.st-hatena.com/image/square/ed0b0f0da09a732498c7005dad94558524b048cb/height=288;version=1;width=512/https%3A%2F%2F4.bp.blogspot.com%2F-rbkOY9a50vg%2FVOntZFkHivI%2FAAAAAAAAMC4%2FBA6klv7B7vc%2Fw1200-h630-p-k-no-nu%2Fmbxss0.png)