全角ハイフンとかチルダとか
予てより課題だったepgrecの後処理漏れ。
全角のハイフンやチルダを含むファイル名が期待通りに認識できていない事は早々にわかったものの、そこから先で暗礁に乗り上げたままだったのだが、PHPのmb_convert_kanaなどで変換した全角のハイフンやチルダが、UTF-8で入力される一般的な0xefbc8d,0xefbd9eとは異なる0xe28892,0xe3809cに展開されているという事がわかった。
正規表現の問題だとばかり思っていたよ。orz
$name = ereg_replace("\xe2\x88\x92", "\xef\xbc\x8d", $name);
$name = ereg_replace("\xe3\x80\x9c", "\xef\xbd\x9e", $name);
な感じで前処理を行うことで、"~“や”-“を含む正規表現フィルタが適用する事ができるようになった。
参照
MUNCHIES LIFE http://d.hatena.ne.jp/shuitic/
- PHPの全角ハイフンの文字化け 2009年4月20日
mokkouyou2001の日記 http://d.hatena.ne.jp/mokkouyou2001/
- OracleとJavaの間で、全角マイナスが文字化け。 2008年3月5日
- UTF-8での文字化け 2008年12月19日
Wikipedia http://ja.wikipedia.org/wiki/