PHP の組み込み関数を使用して中国語の文字をインターセプトすると、時々疑問符が表示されることがあります。以下に、中国語の文字を正確にインターセプトする非常に良い例をいくつかまとめました。
文字列を操作する際の PHP の問題は次の 2 つの問題にすぎません:
1. 文字列エンコーディングが gbk であるか unicode であるかを確認します。
2. 対応するコードに対応する傍受方法を採用します。
一般に、substr を使用して中国語の文字をインターセプトすると、文字化けが発生する可能性があります。中国語の文字は全角なので、1バイトが挟まれると表示できなくなり文字が乱れてしまいます。
実際、解決策は非常に簡単です。以下のインターセプト関数を見てください:
コードは次のとおりです | コードをコピー |
//超長い文字列をインターセプトします |
null は何も意味せず、chr(0) の値は 0 です。 16進数で表すと0×00、2進数で表すと00000000になります
chr(0)は何も表示されませんが、文字です。
漢字が切り詰められると、エンコード規則に従って、必ずその後ろにある他の文字を引き込んで漢字として解釈する必要があるため、文字化けが発生します。 0x81~0xffと0x00の値の組み合わせは常に「空」と表示されます
この機能により、substrの結果の後にchr(0)を追加することで文字化けを防ぐことができます
utf8 でエンコードされたマルチバイト文字列をインターセプトします
コードをコピー | |||||
// utf8 文字列をインターセプトします 関数 utf8Substr($str, $from, $len) { preg_replace('#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$from.'}' を返します。 '((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$len.'}).*#s', ‘$1’,$str); } ?> 漢字インターセプト機能はUTF-8とGB2312の両方に対応
声明: この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 関連記事続きを見る |