フォームから送信された名前や会社名に環境依存文字があった場合、その文字が文字化けしてしまう可能性があります。
それを防ぐために、登録時、環境依存文字を標準の文字に変換する処理を書いたのでここに記録します。
環境
言語:PHP 7
目次
環境依存文字はこんなもの
環境依存文字の例を紹介します。
※WindowsかMacかによっては対象にならない文字もあります。
漢字

数字
①②③④⑤⑥⑦⑧⑨⑩
⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳
ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ
省略文字
№㏍℡㊤㊥㊦㊧㊨
㈱㈲㈹㍾㍽㍼㍻
単位
㍉ ㎜ ㎝ ㎞ ㎎ ㎏ ㏄ ㍉㌔ ㌢ ㍍㌘ ㌧ ㌃ ㌶ ㍑ ㍗ ㌍ ㌦ ㌣ ㌫ ㍊ ㌻
コード
ではコードを書いていきましょう。
まずは、変換前の環境依存文字と、変換後の文字をそれぞれ変数に定義します。
//変換前
$searchStr = [
'①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩',
'㍉', '㌔',
'髙', '﨑', '濵', '閒', '國'
];
// 変換後
$replaceStr = [
'(1)', '(2)', '(3)', '(4)', '(5)', '(6)', '(7)', '(8)', '(9)', '(10)',
'ミリ', 'キロ',
'高', '崎', '濱', '間', '国'
];
次に検索対象の文字を変数に定義します。
(今回は人名、数字、距離にしてみます。)
$parameter = [
'髙橋國光', '⑨', '5㌔'
];
str_replace関数を使って、文字を変換(置換)しましょう。
その後、implodeを使ってカンマ区切りに出力されるようにします。
$parameter = str_replace($searchStr, $replaceStr, $parameter);
///変換対象 変換後 検索範囲
echo implode(',', $parameter);
コードは以上で完成です。ファイルを実行してみましょう。
% php index.php
高橋国光,(9),5キロ
髙 → 高 國 → 国 ⑨ → (9) ㌔ → キロ
無事変換(置換)されましたね。
まとめ
今回はstr_replace関数を使い、parameterの中にあらかじめ定義していた環境依存文字があったら変換(置換)するという方法を取りました。
こうすると決まった方法はないので、自分でいい方法を見つけてみましょう。
コメント