使われることの多い文字列処理を共通関数としてまとめました。
全角トリム
左トリム、右トリムの後に両トリムを行います。
左トリム
function mb_Ltrim($str) {
return preg_replace("/^ +/u", "", $str);
}
右トリム
function mb_Rtrim($str) {
return preg_replace("/ +$/u", "", $str);
}
両トリム
function Mymb_trim($str) {
return mb_Rtrim(mb_Ltrim($str));
}
magic_quotesアンクォート
magic_quotes_gpcがONの時、バックスラッシュを取り除きます。
function Mydel_slash($str) {
if (get_magic_quotes_gpc() == 1) {
return stripslashes($str);
} else {
return $str;
}
}
文字エンコーディング変換
// $str(文字列) $enc(指定のエンコーディング)
function Myencode($str, $enc) {
// エンコーディング検出の順番(状況に合わせて)
$enc_list = "EUC-JP, SJIS";
//文字コードのチェック
$det_enc = mb_detect_encoding($str, $enc_list);
if ($det_enc && $det_enc != $enc) {
return mb_convert_encoding($str, $enc, $det_enc);
} else {
return $str;
}
}
一括変換
PHPでは、入力パラメータやDB取得値を配列で受け取ることが多いので、上記関数を使って配列内の文字列を一括変換します。
アンクォート及び空白除去
POSTまたはGETメソッドで入力されたパラメータ値から、余分なスラッシュや空白(全・半角)を除去。
function Mytrim_array($ary) {
if (is_array($ary) ) {
return array_map("Mytrim_array", $ary);
} else {
//magic_quotes_gpc=Onの時は、エスケープ解除
$ary = Mydel_slash($ary);
// 空白(全・半角)除去
return Mymb_trim(trim($ary));
}
}
HTMLエスケープ
HTML出力値に対して、出力直前に行う。
function Myhtml_array($ary) {
if (is_array($ary) ) {
return array_map("Myhtml_array", $ary);
} else {
return htmlspecialchars($ary, ENT_QUOTES);
}
}
文字エンコーディング
function Myencode_array($ary, $enc) {
if (is_array($ary) ) {
return array_map("Myencode_array", $ary);
} else {
return Myencode($ary, $enc);
}
}
SQLエスケープ(MySQL用)
SQLのクエリ入力値に対して行う。
function MySQLescape_array($ary) {
if (is_array($ary) ) {
return array_map("MySQLescape_array", $ary);
} else {
return mysql_escape_string($ary);
}
}
SQLエスケープ(MySQL)及び文字エンコーディング
DBアクセス時に文字変換が必要な場合。
function MySQLenc_array($ary, $enc) {
if (is_array($ary) ) {
return array_map("MySQLenc_array", $ary);
} else {
$ary = Myencode($ary, $enc);
return mysql_escape_string($ary);
}
}