检测需要对SMS消息进行unicode转换的字符

时间:2013-08-24 10:11:16

标签: php unicode

我环顾四周,无法找到问题的明确答案。

基本上我有一个我正在使用的短信网关。要通过SMS网关发送GSM,中文,阿拉伯语等字符,我必须将消息作为16位unicode发送。

我想要做的是检测消息是否需要作为16位unicode发送,还是只需简单的7位用于简单的英文字符。我的所有角色都以UTF-8存储。

以下是我用于检测此代码的代码:

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

我在这里上传了一些测试用例:http://phpfiddle.org/lite/code/v7f-gi0(只需点击“运行”按钮)

代码对我来说似乎很麻烦。我是以错误的方式解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

感谢Alix Axel发现我的答案:Check unicode in PHP

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