有時候我們需要對字符串進行對比的時候會先對字符串使用strtolower將字符串轉為小寫,但是當遇到字符串中包含中文的情況下,這種情況下會 出現問題,中文字符串經過strtolower轉換後會變為亂碼,搜索了一番確定了這為php系統函數的一個bug,但問題還是需要解決,下面經過摸索得 出兩種解決辦法。
(1)第一種是檢測字符串中是否包含中文,如果包含中文就不進行小寫轉換比較了。
這裡總結了一個函數,判斷一個字符串是否是由純英文,純中文或者中英文混合組成。
/*
*function:檢測字符串是否由純英文,純中文,中英文混合組成 *param string *return 1:純英文;2:純中文;3:中英文混合 */ function check_str($str=''){ if(trim($str)==''){ return ''; } $m=mb_strlen($str,'utf-8'); $s=strlen($str); if($s==$m){ return 1; } if($s%$m==0&&$s%3==0){ return 2; } return 3;}
(2)使用urlencode將字符串進行編碼之後,然後再比較,比第一種方法更全面一些。具體過程為:
strtolower(urlencode($str));*