我四处看看,找不到确切的答案来解决我的问题。
基本上,我有一个短信网关,我正在使用。要通过短信网关发送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按钮)
对我来说,代码看起来很混乱。我是不是走错路了?
发布于 2013-08-24 10:58:20
在这里找到我的答案多亏了Axel:Check unicode in PHP
if (strlen($string) != strlen(utf8_decode($string)))
{
echo 'is unicode';
}https://stackoverflow.com/questions/18417395
复制相似问题