Fieds_labo1
php-マルチバイト
最終更新:
fieds_labo1
-
view
php マルチバイト
将来を考えるとUTF-8で統一がベスト。でも現状はEUC-JP。
シフトJISが入るとさらにややこしく。
シフト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 のオプション(複数指定可)
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でページ作成すると、日本語文字化け。
サーバの初期文字コード 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');
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したデータが取得できません。はて?
POSTしたデータが取得できません。はて?
.htaccess に設定を記述。
サーバ EUC-JP WordPress UTF-8で文字化け対処
php_flag mbstring.encoding_translation off
php_value default_charset “UTF-8″
サーバ EUC-JP WordPress UTF-8で文字化け対処
php_flag mbstring.encoding_translation off
php_value default_charset “UTF-8″
こっちかな?