Fieds_labo1

php-マルチバイト

最終更新:

fieds_labo1

- view
管理者のみ編集可

php マルチバイト


将来を考えるとUTF-8で統一がベスト。でも現状はEUC-JP。
シフトJISが入るとさらにややこしく。

●bool mb_check_encoding ([ string $var [, string $encoding ]] )
  • 文字列のエンコーディングが指定エンコーディングで有効かチェックする。
  • 成功時TRUE、失敗時FALSE。
  • 入力情報は基本的にすべてエンコーディングをチェックする。
  • 半角英数記号は、mb_detect_encoding()でautoチェックするとASCIIを返す。
  • mb_detect_encoding()でEUC-JPを指定した場合は、EUC-JPを返す。

●string mb_detect_encoding ( string $str [, mixed $encoding_list [, bool $strict ]] )
  • 文字列のエンコーディングを検出。
  • list未指定時auto:ASCII、JIS、UTF-8、EUC-JP、SJISの検出優先順が標準。設定ならびにmb_detect_order()で変更可能。
  • 成功時、文字エンコーディングを返す(例:EUC-JP)。失敗時FALSE。


●int mb_ereg ( string $pattern , string $string [, array $regs ] )
  • マルチバイト文字列に正規表現マッチ
  • マルチバイト対応の正規表現マッチを行い、一致した場合は 1(TRUE?)。オプションの3番目の引数を指定した場合は、一致した部分のバイト数を返し、一致した部分文字列を配列 regs に格納。空文字に一致した場合は 1 を返す。正規表現に一致しないか、エラーを発生した場合にFALSE。

●string bin2hex ( string $str )
  • バイナリデータを16進表現に変換
  • 文字列を16進表現に変換したASCII文字列を返す。変換は、上位ニブルからバイト毎に行う。
  • エンディアンを考慮せず、先頭から1バイトずつ処理するため、復元関数が無い。

●string mb_convert_kana ( string $str [, string $option = "KV" [, string $encoding ]] )
  • カナ、英数記号の全角半角相互変換
  • デフォルトはKV(半角カナを全角カナに変換)
  • option="A":!(U+0021)-~チルダ(U+007E)の半角英数記号を全角に変換。
  • ただし、”(U+0022)’(U+0027)¥(U+005C)~(U+007E) の4文字は除く。

●string mb_regex_set_options ([ string $options = "msr" ] )
Regex のオプション(複数指定可)
オプション 意味
i 曖昧なマッチをオンにする
x 拡張パターン形式を有効にする
m '.' が改行にマッチする
s '^' -> '\A', '$' -> '\Z'
p m と s を両方指定するのと同じ
l 最も長くマッチするものを探す
n 空のマッチを無視する
e 結果のコードを eval() する
Regex 構文モード(1個のみ。最後に指定)
モード 意味
j Java (Sun java.util.regex)
u GNU regex
g grep
c Emacs
r Ruby
z Perl
b POSIX Basic regex
d POSIX Extended regex

●mixed mb_regex_encoding ([ string $encoding ] )

●bool mb_ereg_match ( string $pattern , string $string [, string $option = "msr" ] )
  • 一致する場合TRUE、それ以外はFALSE
  • 内部エンコーディングあるいは mb_regex_encoding() で指定した文字エンコーディング使用。

●string mb_ereg_replace ( string $pattern , string $replacement , string $string [, string $option = "msr" ] )
  • 成功時は結果の文字列、エラー時はFALSE
  • 内部エンコーディングあるいは mb_regex_encoding() で指定した文字エンコーディング使用。


シフトJISの文字化けについて

●string stripslashes ( string $str )
  • magic_quotes_gpc が on (デフォルトでオン)の時で、クォートされた文字列を元に戻したいとき。
  • シフトJISの入力フォームからPOSTで取得するときの前処理とか。
  • MySQLにデータ入れるときの前処理とか。


ロリポップはシフトJISに優しい感じ?w


UTF-8でサイト制作
サーバの初期文字コード UTF-8
mb_internal_encoding(); の結果は EUC-JP
UTF-8でページ作成すると、日本語文字化け。

phpソースに出力バッファ変換を書く。
define('CHARACTERSET_INTERNAL', 'UTF8');
define('CHARACTERSET_INPUT', 'auto');
define('CHARACTERSET_OUTPUT', 'UTF8');
mb_internal_encoding(CHARACTERSET_INTERNAL);
mb_http_input(CHARACTERSET_INPUT);
mb_http_output(CHARACTERSET_OUTPUT);
ob_start('mb_output_handler');

画面表示の文字化けは無くなったけど、Form入力がうまくいかず。
POSTしたデータが取得できません。はて?

.htaccess に設定を記述。
サーバ EUC-JP WordPress UTF-8で文字化け対処
php_flag mbstring.encoding_translation off
php_value default_charset “UTF-8″

こっちかな?



記事メニュー
ウィキ募集バナー