既存のイントラネット システムを CodeIgniter に変換する予定です。あらゆる種類の異なる文字を処理できるように、私は常に UTF-8 を使用してきました。これは、システム (請求書、住所ラベルなどの出力) にとって不可欠です。
システムのユーザーを混乱させることが多いため、入力時に自動的に置き換えることにした文字がいくつかあります。
- 一重引用符と二重引用符の両方の中括弧。通常のアポストロフィ/引用符に置き換え
- 通常のハイフンに置き換えられたエン ダッシュとエム ダッシュ
- 3 つのピリオドに置き換えられた楕円
少なくともこれらの句読記号はすべて一貫して使用され、保存されています。
データベースに格納されるデータは、このシステムでは常に POST によって受信されるため、ページが読み込まれるたびに POST 配列に対して次の関数を実行します...
function nasty_chars_replace(&$var) {
$trans_table = array(
chr(0xe2).chr(0x80).chr(0x9a) => '\'', //SINGLE LOW-9 QUOTATION MARK
chr(0xe2).chr(0x80).chr(0x9e) => '"', //DOUBLE LOW-9 QUOTATION MARK
chr(0xe2).chr(0x80).chr(0xa6) => '...', //HORIZONTAL ELLIPSIS
chr(0xe2).chr(0x80).chr(0x98) => '\'', //LEFT SINGLE QUOTATION MARK
chr(0xe2).chr(0x80).chr(0x99) => '\'', //RIGHT SINGLE QUOTATION MARK
chr(0xe2).chr(0x80).chr(0x9c) => '"', //LEFT DOUBLE QUOTATION MARK
chr(0xe2).chr(0x80).chr(0x9d) => '"', //RIGHT DOUBLE QUOTATION MARK
chr(0xe2).chr(0x80).chr(0x93) => '-', //EN DASH
chr(0xe2).chr(0x80).chr(0x94) => '-' //EM DASH
);
foreach ($trans_table as $utf8_code => $replace) {
$var = str_replace($utf8_code, $replace, $var);
}
return trim($var);
}
array_walk_recursive($_POST, 'nasty_chars_replace');
CodeIgniter で、すべての POST データ (POST が存在する場合) に対してグローバルに同様のことを行う方法はありますか?
他の誰かがこのようなことをしますか?
データの一貫性のために「クレンジング」(サニタイズなどではない)を検討する必要がある、混乱しやすい他の文字はありますか?
編集:これも良い考えですか?
EDIT 2:trim()
先頭/末尾の空白を削除するために、すべての POST データも同様に削除する必要があります。そのため、誰かが入力を空白で埋めることを決定した場合、検証は失敗する可能性があります。