PHP の正規表現で中国語の文字化けに一致する場合の解決策: まず PHP コード ファイルを開き、次に UTF8 修飾子をコード ファイルに追加します。正規表現ステートメントは "preg_replace('/[万]/ など) です。 u','wan',$a);"。
推奨: 「PHP ビデオ チュートリアル 」
具体的な質問:
正規表現を使用して PHP 文字列内の中国語の文字と一致させると文字化けが発生する
<?php echo '<h2>正则表达式匹配中文</h2><br>'; $a = '天地不仁,以万物为刍狗'; $b = preg_replace('/万/','萬',$a); echo $b; echo '<h2>加上方括号后替换结果出现乱码</h2><br>'; $c = '天地不仁,以万物为刍狗'; $d = preg_replace('/[万]/','萬',$a); echo $d; ?>
上記のプログラムの結果は、http://nyaii.com/s/test で確認できます。 php.一致する漢字に角括弧を追加すると、何らかの理由で文字化けが発生します。同じ状況で、JavaScript で実行するとすべてが正常に動作します。
'天地不仁'.replace(/[天]/,'') //outputs "地不仁"
解決策:
UTF8 修飾子を追加
$d = preg_replace('/[万]/u','萬',$a);
他の修飾子については、
##以下はトピックのコメントの質問に対する補足内容です
# についてなぜ [] 内に u 修飾子を追加する必要があるのかという疑問ですが、実際、厳密に言えば、両方の状況で u 修飾子を追加するのが最善です しかし、なぜ [] が文字化けを引き起こすのでしょうか? これが必要です文字レベルではなくバイトレベルから説明します。 まず第一に、PHP 文字列は Unicode で保存されていないことがわかっています。次に、このコードを見てみましょう。<?php $a = "万"; echo strlen($a); //3 for ($i = 0; $i < strlen($a); $i++) { echo dechex(ord($a[$i])) . ' '; //e4 b8 87 }
以上がPHP正規マッチング中国語文字化け問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。