看板 PHP 關於我們 聯絡資訊
※ 引述《Instance (呆呆華)》之銘言: : ※ 引述《cinsgreen (小綠)》之銘言: : : 各位板友好 : : 想請問 PHP 有辦法判斷 USER 輸入的字串是否為中文呢? : : 目前有的想法是將 USER 輸入的字串丟到陣列 : : 再一個一個比對 ASCII 碼來比對輸入的字串是否為英文 : : 想請教是否有更容易的作法 : : 謝謝 可以用 filter function http://www.php.net/manual/en/ref.filter.php 你需要的常數: FILTER_FLAG_STRIP_LOW (integer) Strip characters with ASCII value less than 32. FILTER_FLAG_STRIP_HIGH (integer) Strip characters with ASCII value greater than 127. FILTER_FLAG_ENCODE_LOW (integer) Encode characters with ASCII value less than 32. FILTER_FLAG_ENCODE_HIGH (integer) Encode characters with ASCII value greater than 127. 這樣會比你自己實做來得快。 : 常用的判斷格式的方法, : 參考看看吧!! : function check_data_format($str, $type) { : $chk = 0; : switch($type) { : case "account": //小寫英文,數子及_-.等符號 : $chk = preg_match("/^[a-z0-9_\-\.]{6,}$/", $str); : break; : case "password": //大小寫英文,數子及_-.等符號 : $chk = preg_match("/^[\w_\-\.]{6,}$/", $str); : break; : case "date": //日期 (Ex: 2009/1/1 or 2009-1-1) : $chk = preg_match("/^\d{4}[-\/]\d{1,2}[-\/]\d{1,2}$/", $str); : break; : case "email": //Mail : $chk = preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/", : $str); : break; : case "url": //網址 : $chk = : preg_match("/^https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?$/", : $str); : break; : case "chinese": //中文但不支援標點符號s : $chk = preg_match("/^[\x{4e00}-\x{9fa5}]+$/u", $str); : break; : case "eng&num": //英數字 : $chk = preg_match("/^\w+$/", $res); : break; : } : if (!$chk) : retrun false; : else : return true; : } -- 凝視著,卻看不見光景。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.23.32.124
LPH66 :這只有英文吧... 01/15 14:05
roga :除了那些字之外,不就是中文了嗎.. XD 01/15 23:13
※ 編輯: roga 來自: 220.130.223.207 (01/15 23:14)