php - 当我使用 PHP 发送推送通知消息时获取反斜杠 (\) 和撇号 (')

标签 php html ios regex

我有一个 PHP 脚本,用于向手机发送推送通知消息。我们能够完美地发送和接收正常的消息。但是当我在消息中使用 aphostropice(') 时,我们无法在手机中接收消息。谷歌搜索后,我在 PHP [addslashes($variable_name)] 中找到了一个函数。现在,当我使用此功能时,我们正在接收消息,但并不像预期的那样,这意味着我在通知消息中有撇号 (') 的地方收到“\”。

例如, 1)大家好! - 当我发送此消息时,我们能够收到推送通知消息。

2) 来吧,让我们玩游戏吧! - 当我发送此消息时,首先,我们无法收到消息,但是当我使用 php 函数 [addslashes()] 时,我们收到了消息但不正确, 我们得到这样的消息 - 来吧,让我们玩游戏吧(注意在撇号 (') (Let\'s) 之前有一个反斜杠 ()),这不是正确的消息。

非常感谢任何帮助,提前致谢!!!

我的 PHP 代码:

     $msg = $_POST['messageTxt'];    // Gets the Notification Message from the User
     $message = addslashes($msg);
    $device_token ="************************************************************";
      $device = $device_token;
                $payload['aps'] = array('alert' => $message, 'badge' => +1, 'sound' => 'default');
                $payload = json_encode($payload);


                $options = array('ssl' => array(
                'local_cert' =>'****',
                'passphrase' => '*****'
                ));
                        /////////////////////////////////////////////////////////////////////////////////
                       //                      APNS SERVER CONNECTIVITY                               //
                      /////////////////////////////////////////////////////////////////////////////////

                $streamContext = stream_context_create();
                stream_context_set_option($streamContext, $options);
                $apns = stream_socket_client('ssl://gateway.push.apple.com:2195', $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext);

                $apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $device)) . chr(0) . chr(strlen($payload)) . $payload;

               //  echo $apnsMessage.'<br> <br>';

                $res=fwrite($apns, $apnsMessage);

                $payload ='';
                $apnsMessage='';
 fclose($apns);  // Closes the APNS Sercer Connection

最佳答案

虽然我没有推送消息的具体经验,但我会尝试使用 json“ native ”编码选项解决 json 编码解码问题,而不是 php addslashes() 或任何其他方式。
尝试 json_encode() 选项,特别是:

json_encode($payload, JSON_HEX_QUOT);

我还会测试其他特殊字符(<、>、& 等...)的其他可能问题,并测试相应的 json_encode() 选项。

http://php.net/manual/en/function.json-encode.php (参见参数 int $options = 0)
http://php.net/manual/en/json.constants.php (参见 JSON_HEX_QUOT、JSON_HEX_TAG、JSON_HEX_AMP、JSON_HEX_APOS,可能还有 JSON_UNESCAPED_SLASHES 与 addslashes() 的结合)

关于php - 当我使用 PHP 发送推送通知消息时获取反斜杠 (\) 和撇号 ('),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32602302/

相关文章:

php - 想在swift 4中通过php api上传图片

php - 在 PHP 中从文本创建图像 - 如何制作多行?

php - 使用 curl php 上传缺少 POST 参数

html - Microsoft Outlook 2016 上的白色边框

ios - 如何在没有 Storyboard的情况下启动另一个 View Controller ?

php - 使用相同查询的多个 PHP WHILE 循环

相当于 php move_uploaded_file 的 JavaScript

javascript - 使用 websocket 流式传输视频标签

ios - AFNetworking 错误太多 http 重定向 iOS 9

ios - swift 中的排名数字循环