检测需要对短信息进行unicode转换的字符


Detect characters that will require unicode converstion for SMS messages

我环顾四周,找不到问题的确切答案。

基本上我有一个短信网关,我正在使用。要通过他们的短信网关发送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(只需点击Run按钮)

代码对我来说真的很乱。我是不是搞错了?

多亏了Alix Axel,我在这里找到了答案:在PHP 中检查unicode

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