我想禁止某些UTF-8輸入(服務器端),例如東方語言,其中示例輸入可能是「伊」。如何檢測非西方字符?
但是,我確實想繼續支持其他拉丁字母或「拉丁式」字符,如威爾士語ŵ和ŷ,所以checking against latin-1 is not possible。
我有什麼選擇? (如果語言特定,PHP首選)
非常感謝。
推理:對於很多非西方字符瀏覽器的支持往往是丟失(例如,在不同的瀏覽器我只是看到上面的問題一箱),所以對於像顯示名稱有時是適當限制它即使它不適合消息體
我想禁止某些UTF-8輸入(服務器端),例如東方語言,其中示例輸入可能是「伊」。如何檢測非西方字符?
但是,我確實想繼續支持其他拉丁字母或「拉丁式」字符,如威爾士語ŵ和ŷ,所以checking against latin-1 is not possible。
我有什麼選擇? (如果語言特定,PHP首選)
非常感謝。
推理:對於很多非西方字符瀏覽器的支持往往是丟失(例如,在不同的瀏覽器我只是看到上面的問題一箱),所以對於像顯示名稱有時是適當限制它即使它不適合消息體
只是做
preg_match('/[^\\p{Common}\\p{Latin}]/u', $string)
其中$string
是UTF-8字符串。如果有非拉丁字符,則返回「1」,否則返回「0」。
例子:
var_dump(preg_match('/[^\\p{Common}\\p{Latin}]/u', 'sf..ŷaás??')); //int(0)
var_dump(preg_match('/[^\\p{Common}\\p{Latin}]/u', 'sf..ŷݤaás??')); //int(1)
你介意我問你爲什麼不希望允許在一個國際化的網站一些語言? – Borealid 2010-08-05 03:45:59
公平的問題。這隻需要一個表的一個字段;網站的其餘部分將支持它。 – HoboBen 2010-08-05 03:56:43
那麼你允許的字符的子集是什麼?它是否適合現有的字符集?如果是這樣,你可以''iconv'字符串到目標編碼,丟棄所有無效字符。 – deceze 2010-08-05 04:00:12