json_encode和撇号

时间:2017-03-23 12:44:49

标签: php json http-post stripslashes

我正在使用PHP构建一个WordPress插件,让客户使用OneSignal向移动应用发送推送通知。我有一个form和datahandler函数,因为action是递归的:

<form name='fcnaddpush' id='fcnaddpush' action="<?php echo $_SERVER['REQUEST_URI']; ?>" METHOD="POST" />

当用户单击提交按钮时,该函数调用自身,然后解析在表单中输入的值,创建数组,使用json_encode()进行预处理,然后通过cURL提交给OneSignal的REST API。这一切都很好,直到.......

如果标题或内容包含撇号,则会产生问题。 $ _POST ['title']在字符串中返回\',并且json_encode双重转义它,所以现在已经成为了它。当推送通知与双重转义撇号一起使用时,显示通知的javascript函数将消失,并且由于该字符串已写入移动设备上的文件,因此在不卸载和重新安装应用程序的情况下,不会显示旧的或新的通知。

在调用json_encode()之前,我可以通过使用stripslashes($ _ POST ['title'])来解决这个问题。

问题是,我想,当使用stripslashes()时,是否会对其他“特殊字符”产生意想不到的后果?有没有办法告诉POST方法使用utf-8而不是urlencode?这甚至会起作用吗?

0 个答案:

没有答案