2013-08-24 47 views
0

我查看了一下,找不到我的問題的確切答案。檢測需要用於SMS消息的Unicode轉換的字符

基本上我有一個我正在使用的短信網關。要通過他們的短信網關發送GSM,中文,阿拉伯文等字符,我必須將該消息作爲16位unicode發送。

我想要做的是檢測是否該消息將需要發送16位Unicode或者只是普通的老7位簡單的英文字符。我所有的角色都以UTF-8格式保存。

這裏是我的代碼,我使用來檢測這樣的:

if (preg_match("/^[a-zA-Z0-9 [email protected]#$%^&*()-_+={\[\]}|\\`<>,.\?\/]*$/u", $string) == 1) 
    return '7-bit'; 
else 
    return '16-bit'; 

我在這裏已經上傳了一些測試用例:http://phpfiddle.org/lite/code/v7f-gi0(只需點擊運行按鈕)

的代碼似乎真的凌亂我。我是否以這種錯誤的方式去做?

+1

可能重複[入住,PHP的unicode(http://stackoverflow.com/questions/1350758/check-unicode-in-php) –

+1

爲什麼不用'^ [\ x00- \ x7F] * $'? – Gumbo

回答

0

找到我的答案在這裏感謝阿利克斯阿克塞爾:Check unicode in PHP

if (strlen($string) != strlen(utf8_decode($string))) 
{ 
    echo 'is unicode'; 
}