我环顾四周,找不到我的问题的明确答案。
基本上我有一个我正在使用的 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(只需点击运行按钮)
代码对我来说似乎真的很乱。我会以错误的方式解决这个问题吗?