您好,登錄后才能下訂單哦!
在PHP中使用正則匹配中文,很多時(shí)候會(huì)出現(xiàn)問題,在不同的編碼情況下,正則表達(dá)式不太一樣,所以希望大家注意,在使用正則匹配中文的時(shí)候,多多注意編碼問題。
在JS下能夠使用的在PHP中不一定可以使用,比如:/^[a-zA-Z0-9\_\.\_\(yùn).\u4E00-\u9FA5\uF900-\uFA2D]+$/;
如果在PHP中使用 :\u4E00-\u9FA5\uF900-\uFA2D 來匹配,那么會(huì)在運(yùn)行PHP腳本的時(shí)候出現(xiàn)錯(cuò)誤,
Warning: preg_match(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 6
那是因?yàn)椋?span >PHP正則表達(dá)式中不支持下列 Perl 轉(zhuǎn)義序列:\L, \l, \N, \P, \p, \U, \u, or \X
但是在在 UTF-8 模式下,允許用“\x{...}”,花括號(hào)中的內(nèi)容是表示十六進(jìn)制數(shù)字的字符串,一下給出了一個(gè)簡單的中文匹配示例:
//匹配中文、英文字符、數(shù)字、特殊符號(hào)全角除外 $str = 'adf^^**^k2)(*&3423sfdgsdf#$%^423jkalk阿拉丁解放路dsfj'; $rule = "/([\x80-\xff]{1,})/"; echo "<pre>"; preg_match_all("/([?=[\x21-\x7e]{1,}|[A-Za-z0-9]{1,}|[\x{4e00}-\x{9fa5}]{1,})/u", $str, $m); var_dump($m); //支持特殊符號(hào)(半角) $rule = "/((?=[\x21-\x7e])[^A-Za-z0-9]){1,}/u"; preg_match($rule, $str, $m); var_dump($m); //匹配中文···· $str = "erwerwe.·中文·匹配·324#¥%……"; $rule = "/([\x{4e00}-\x{9fa5}\·]{1,})/ius"; preg_match($rule, $str, $m); var_dump($m); //匹配郵件 $email ="qwerty234234@234567_#$%@yahoo.cn"; //$email = "bieru52@aliyun.com"; $rule = "/(^[a-zA-Z0-9][a-zA-Z0-9\.\_\-]{1,30}@[a-zA-Z0-9_-]{1,10}(\.[a-zA-Z0-9_-]{1,10}){0,4})\.[a-zA-Z]{1,10}$/"; $m = preg_match($rule, $email); var_dump($m);
雙字節(jié)字符編碼范圍
GBK (GB2312/GB18030)
x00-xff GBK雙字節(jié)編碼范圍
x20-x7f ASCII
xa1-xff 中文 gb2312
x80-xff 中文 gbk
UTF-8 (Unicode)
u4e00-u9fa5 (中文)
參考文檔: 正則表達(dá)式30分鐘入門教程
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。