この関数は非常にうまく機能しますが、原理を理解していない初心者もいるかもしれません私もそうですが、この機能を使うときにいつも不安を感じています。この機能の原理を説明します。そして、他人のコードを再利用することは巨人の肩の上に立つようなものだと思いますが、他人のコードを理解していなければ、遅かれ早かれ地に落ちることになります。
最初の文:
preg_match_all("/[x80-xff].|[x01-x7f]+/",$str,$r); これは、正規表現を使用して文字列 [x80] 内のすべての文字と一致します。 -xff] は、中国語の文字に一致します。1 つは 16 進数の 80 から ff までの文字で、これはたまたま中国語の文字エンコーディングの最初の文字です。このようにして、漢字を完全に一致させることができます。 Unicode での漢字のエンコードについては、オンラインで検索できます。同様に、[x01-x7f]+英語文字列は、最も古い英語は ASCII エンコードであるため、エンコード値は 128 未満、つまり 16 進数で 01 から 7f まで、「+」は 1 つ以上の文字を表すため、 [x01 -x7f]+ は、複数の連続する英語の文字列と一致します。
コードをコピーします
コードは次のとおりです:
$ar = $r[0]; //$r[0] は一致した配列を格納します
foreach($ar as $k=>$v) {
if(ord($v[0] ) < 128) //文字エンコーディングの値が 128 未満の場合は、英語の文字であることを意味します
hex(iconv("GB2312","UCS-2",$v)); //それ以外の場合は、 iconv 関数は、中国語の文字を ucs-2 エンコーディング (Unicode エンコーディングである ucs-2 エンコーディング) に変換します
}
JavaScript では、unescape を使用して
u0391-uFFE5 と u4e00-u9fa5 をデコードして中国語に一致させることができます
しかし、前者には A- が含まれているようです漢字の下の¥と後者は純粋な漢字である可能性があります。 decoding関数は次のとおりです。コードは次のとおりです{S if (Substr ($ v, 0,2) == "%u")
$ AR [$ k] = iconv ("ucs-2", "gbk", Pack ("h4", substr ($ v ,-4)); H4",substr ($v,3,-1))); ","GBK",pack("n",substr($v,2,-1)));
1. GBK (GB2312/GB18030)
x00-xff GBK の全角エンコード範囲
x20-x7f ASCIIxa1-xff 中国語x80-xff 中国語2. UTF-8 (Unicode)
(中国語)
x3130-x318F (韓国語
xAC00-xD7A3 (韓国語)
u0800-u4e00 (日本語)
ps: 韓国語は [u9fa5] より大きい文字です
通常の例:
preg_replace("/([x80 - xff])/","",$str);
preg_replace("/([u4e00-u9fa5])/","",$str);
http://www.bkjia.com/PHPjc/327931.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/327931.html
技術記事
js を使用して URL 内の中国語文字をエスケープ エンコードします。 a href="" onclick="window.open('product_list.php?p_sort='+escape('Script Home'));"リンクをクリックした後の効果は次のとおりです: 引用: http://...