今日も適当ダイアリー

PHP や Javascript や Symfony、BEAR.Sunday などのWeb周りのことを中心に。それ以外のことも気まぐれに投稿します。

PHPの文字化け対策

PHPのフォームなどで、文字のやりとりをしていると、文字化けを起こす場合があります。

特に、文字コードがShift-JISだったりすると「機能」が「機\能」になってしまったりする場合があります。これは、PHP4やPHP5の設定ではmagic_quotes_gpcがonになっており、これの影響を受けている状況です。(この現象については他のサイトで。。。)
問題を解消をするために、一つずつstripslashes()を使うのは面倒ですし、二重に処理をしてしまったり、もしくはmagic_quotes_gpcがoffの環境に移行するときに手間がかかるのは解せないので、下記コードを良く利用しています。

<?php
   // マジッククオートされている場合に、スラッシュを取り除く
    function no_slashes($array) {
      if (get_magic_quotes_gpc()) {
        foreach($array as $key=>$value) {
          if(is_array($value)) {
            $value = no_slashes($value);
            $array_temp[$key] = $value;
          } else {
            $array_temp[$key] = stripslashes($value);
          }
        }
        return $array_temp;
      } else {
        return $array;
      }
    }
    
    // 処理を行いたい配列を渡す
    $_GET = no_slashes($_GET);
    $_POST = no_slashes($_POST);
    $_COOKIE = no_slashes($_COOKIE);
?>