Php 表情符号导致iphone崩溃

Php 表情符号导致iphone崩溃,php,iphone,objective-c,Php,Iphone,Objective C,我们的iphone应用程序有一个聊天室,用户可以在这里发表评论。最近,聊天室一直在破坏该应用程序,因为用户在评论中添加了表情符号。我访问了我的服务器PHP脚本,不允许使用不在A-z0-9范围内的字符。我还允许使用大约30个标点字符,希望这样可以防止应用程序/提要崩溃。然而,表情符号仍在聊天室中大量出现 这是我的服务器脚本中的正则表达式筛选器,不允许使用特殊字符的注释: $special = "/\W/"; $special2 = "/[\~\!\@\#\$\%\^\&\*\(\)\_\+

我们的iphone应用程序有一个聊天室,用户可以在这里发表评论。最近,聊天室一直在破坏该应用程序,因为用户在评论中添加了表情符号。我访问了我的服务器PHP脚本,不允许使用不在A-z0-9范围内的字符。我还允许使用大约30个标点字符,希望这样可以防止应用程序/提要崩溃。然而,表情符号仍在聊天室中大量出现

这是我的服务器脚本中的正则表达式筛选器,不允许使用特殊字符的注释:

$special = "/\W/";
$special2 = "/[\~\!\@\#\$\%\^\&\*\(\)\_\+\`\-\=\{\}\|\:\\\"\<\>\?\,\.\/\;\'\[\]]/";

if ((preg_match($special,$comment)) && (!preg_match($special2,$comment)))
上面的PHP语句表示,如果脚本发现一个字符不是[a-z][0-9],也不是所列的标点符号之一,则拒绝该注释

最近破坏该应用程序的评论如下:

<comment>Exciting times&icirc;€Žits all about the &icirc;Â&sect; go Team!!</comment>

关于如何防止应用程序崩溃,有什么建议吗

如果我不得不冒险猜测的话,下面是我认为正在发生的事情。你的应用程序可能无法正确处理unicode。假设字符计数==字节计数等等,可能会发生很多事情,但是如果你将某些unicode字符串发送到你的应用程序,它就会崩溃

iPhone Empoji使用U+E001–U+E05A的部分专用代码范围实现为unicode。无法正确过滤的原因是PHP regexp引擎不会使用高unicode范围解析传入字符串,除非在字符串末尾附加u:

$special2 = "/[\~\!\@\#\$\%\^\&\*\(\)\_\+\`\-\=\{\}\|\:\\\"\<\>\?\,\.\/\;\'\[\]]/u";

这样做可能会产生其他意想不到的后果,具体取决于设置的方式,从长远来看,最好确保您能够正确处理任意unicode字符串。

以下是我解决问题的方法。该程序现在在将注释插入数据库之前对其进行解码/编码

$comment = utf8_decode($comment); 
$comment = utf8_encode($comment); 
我还向动态xml/php提要添加了一个utf-8头:

header('Content-type: text/html; charset=utf-8'); 

表情符号不显示,这很好。但是feed现在是有效的,不会使应用程序崩溃。问题已解决。

找出应用程序崩溃的原因是否更有意义?而不是在PHP中闲逛?你的应用程序有一个bug,一个漏洞,你需要修复它,对此,我们没有详细信息来帮助你。真的。当我在聊天室输入自己的表情时,我无法复制错误。我在iphone上有自己的表情符号,它们不会导致聊天室崩溃。我们联系了导致应用程序崩溃的用户,并试图获取尽可能多的信息,以了解他们到底是如何导致应用程序崩溃的。听起来您正在解决问题的道路上下面是我如何解决这个问题的。该程序现在在将注释插入数据库之前对其进行解码/编码$comment=utf8\u decode$comment$comment=utf8_encode$comment;我还向动态xml/php提要添加了一个utf-8头:头的Content-type:text/html;字符集=utf-8';表情符号不显示,这很好。但是feed现在是有效的,不会使应用程序崩溃。问题解决了。