我环顾四周,无法找到问题的明确答案。
基本上我有一个我正在使用的短信网关。要通过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(只需点击“运行”按钮)
代码对我来说似乎很麻烦。我是以错误的方式解决这个问题吗?
答案 0 :(得分:1)
感谢Alix Axel发现我的答案:Check unicode in PHP
if (strlen($string) != strlen(utf8_decode($string)))
{
echo 'is unicode';
}