0

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

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

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

4

1 回答 1

1

感谢 Alix Axel,在这里找到了我的答案:Check unicode in PHP

if (strlen($string) != strlen(utf8_decode($string)))
{
    echo 'is unicode';
}
于 2013-08-24T10:58:20.170 回答