phputf-8編碼正則匹配中文

apachecn_飛龍發表於2014-07-09

首先unicode裡面 中文的區域的0x4e00-0x9fa5
在java或者js這種已unicode編碼處理字串的程式語言中
/^[u4e00-u9fa5]+$/就可以判斷一個字串是否全部為中文

那麼php中 字元的編碼根據頁面而定
頁面是gbk的 字元編碼就是gbk的 utf-8也同理
之前有一個表示式 “/^[x80-xff]+$/”
僅僅可以匹配是否含有非ascll字元
而漢字只是其中一個比較小的區域 不太精確

由於我的頁面編碼是utf-8的
於是把js的表示式搬到php中來
提示PCRE不支援”u”和其他亂七八糟的一大堆東西

後來查資料瞭解到 php的正則有一種叫做字元組的東西
用x{…}表示
於是把表示式改成”/^[x{4e00}-x{9fa5}]+$/”
又提示”x”表示式後的數字太大

又查了資料 瞭解到可以使用修正模式”u” 讓程式把後面當成unicode字元處理
於是改成了”/^[x{4e00}-x{9fa5}]+$/u” 測試成功

所以php下正則匹配中文的表示式是 “/^[x{4e00}-x{9fa5}]+$/u”
這個僅適用於utf-8編碼


相關文章