php判斷是否中文
1. 在Thinkphp 中怎麼實現中英文切換啊
我用一維數組寫個實例,看懂了再自己去改:
//數組
$info = array(
'id' => '1',
'content' => '你好',
'en_content' => 'welcome'
);
//循環對比
foreach($info as $key => $value){
if ( ereg('['.chr(0xa1).'-'.chr(0xff).']', $value) ){ //判斷是不是純中文,是為 true
//是純中文時,去相應的語言包中做對比,查找當前的中文 $value 對應的英文是什麼,並把找到的英文替換掉當前這個中文
$info[$key] = '匹配成功後的英文';
}elseif ( ereg('[a-zA-Z]', $value) ){ //判斷是不是純英文,是為true
//是純英文時,去相應的語言包中做對比,查找當前的英文 $value 對應的中文是什麼,並把找到的中文替換掉當前這個英文
$info[$key] = '匹配成功後的中文';
}else{
// echo '既不是純中文,也不是純英文,可能有數字混在其中,或者是id 值';
}
}
return $info; //最後直接返回$info 即為中英文互換後的數組
2. php關於截取中文字元串的問題
php中文亂碼的原因及解決方法
原因:1.php頁面語言本身的編碼類型不合適,這時候,你直接在腳本中寫的中文肯定是亂碼,不用說資料庫了;
解決方法:選擇'utf8'或者'gb2312',這樣客戶瀏覽器會自動選擇並出現正確的中文顯示。注意:'utf8'或者'gb2312'都可以正確顯示中文的。
2.資料庫mysql中的編碼類型不正確。
解決方法:創建資料庫的時候,mysql
字元集選擇'utf8',mysql
連接校對選擇utf8_general_ci,這樣創建的資料庫用來存儲中文肯定沒有問題,
否則,你的中文首先在mysql中就是亂碼,更不要期望它會給你在php頁面中顯示正確。
3.與平時的腳本編輯環境有關。比如,有些內容是自己用word寫的,有些是用記事本寫的,有些用editplus、ultraplus等文本編輯器。有時候就直接在dw中寫中文了,
這樣做不出亂碼才怪呢。
解決方法:盡量用同一種編輯器。如果是拷貝來得既有的內容,建議用ultraplus中的編碼轉換功能把它轉換成utf8或者gb2312。
到底轉換成什麼類型並不重要,關鍵要求你的php
web應用程序中的編碼要一致就行。
4.編程訪問
mysql時,建議添加一行代碼:mysql_query("set
names
'gbk'");
這是解決方法
我沒看懂你貼上來的程序
所以給你一些方法去解決亂碼的問題
希望可以幫得上
3. 關於PHP里中文正則表達式的問題
剛才的不夠嚴謹,修改下:
/^[a-zA-Z_\x{4e00}-\x{9fa5}][\x{4e00}-\x{9fa5}\w]{2,11}$/u
解釋:
[a-zA-Z_\x{4e00}-\x{9fa5}] //第一位,必須非數字,但又要滿足其它條件
[\x{4e00}-\x{9fa5}\w]{2,11} //從第二位開始,必須滿足全部條件,長度為2到11位(加第一位就是3到12位啦)。
補充:
\x{4e00}-\x{9fa5}這個就是漢字的Unicode范圍。
一定不要忘記最後那個 u ,沒有這個修正符,就不能正常識別中文了
4. PHP檢查字元串是否全部是中文,用於漢字姓名判斷
當做一些電商網站的時候,會遇到很多時候購物要實名認證,對於國內的人來說,輸入姓名的時候都要輸入漢字。漢字而不是中文,為什麼這么說。「。」這個也是中文,所以說漢字比較准確一點。
分析
還有一些少數民族裡面含有·這個符號。
所以演算法的核心就是全部為中文或者全部為中文並且有·這個符號的兩種情況才允許姓名通過驗證。
代碼如下:
5. php怎麼判斷輸入框不能提交中文
1、首先strlen返回的字元長度和mb_strlen以當前編碼計算的長度一致,可以判斷是純英文字元串。
2、其次strlen返回的字元長度和mb_strlen以當前編碼計算的長度不一致,且strlen返回值同mb_strlen的返回值求余後得0可以判斷為是全漢字的字元串。
3、最後strlen返回的字元長度和mb_strlen以當前編碼計算的長度不一致,且strlen返回值同mb_strlen的返回值求余後不為0,可以判斷為是英漢混合的字元串。