文字列を比較する必要がある場合、最初に strto lower を使用して文字列を小文字に変換しますが、文字列に中国語が含まれている場合、この場合に問題が発生します。strto lower によって変換された文字列は文字化けします。いくつかの検索の結果、これは PHP システム関数のバグであることが判明しましたが、この問題はまだ解決する必要があります。以下に 2 つの解決策があります。
(1) 1 つ目は、文字列に漢字が含まれているかどうかを検出することです。漢字が含まれている場合、小文字の変換と比較は実行されません。
ここでは、文字列が純粋な英語、純粋な中国語、または中国語と英語の混合のいずれで構成されているかを判断する関数の概要を示します。
<p>/*</p>*function:检测字符串是否由纯英文,纯中文,中英文混合组成<br />*param string<br />*return 1:纯英文;2:纯中文;3:中英文混合<br />*/<br />function check_str($str=''){<br /> if(trim($str)==''){<br /> return '';<br /> }<br /> $m=mb_strlen($str,'utf-8');<br /> $s=strlen($str);<br /> if($s==$m){<br /> return 1;<br /> }<br /> if($s%$m==0&&$s%3==0){<br /> return 2;<br /> }<br /> return 3;<br /><p>}</p>
(2) urlencode を使用して文字列をエンコードし、比較します。これは、最初の方法よりも包括的です。具体的なプロセスは次のとおりです:
strtolower(urlencode($str));