【问题标题】:How to escape a new line in api so it does not add "n" in the iPhone application如何在 api 中转义新行,使其不在 iPhone 应用程序中添加“n”
【发布时间】:2017-11-20 05:30:39
【问题描述】:

这是在api中输出数据的部分代码:

$message = str_replace('"','"',$message); 

$message = utf8_encode($message);

$info = array('whosendit' => $use_id,
         'message_number' => $message_number,
         'date' => $date,
         'seen' => $checked_mess,
         'message' => $message,  
         'pic' => $pic
    );
    $rows[] = $info;        
}

$row66 = array($rows, $other_side_avatar, $other_side_name, $other_side_sex, $banned_or_not, $blocked, $start_position);

echo str_replace("\\","", json_encode($row66));


exit;

这里发生的情况是 str_replace 正在删除 \n 前面的 \,因此,如果消息是“你好吗(这里是新行)”,应用程序将显示“你好吗”而不是新的句后空行。我需要 str_replace 来完成它的工作,因为没有它像 uploads/mypicture.jpg 这样的链接将作为 uploads/mypicture.jpg 返回,我们无法在应用程序中使用它。任何建议将不胜感激。

【问题讨论】:

  • uploads/mypicture.jpg 正在使用正斜杠,为什么要去除反斜杠? (以及为什么正斜杠会破坏您的应用程序)
  • 如果我不剥离反斜杠,json 将转义正斜杠,我需要实际的图像表示,即 uploads/mypicture.jpg 而不是 uploads\/mypicture.jpg,以便应用程序能够加载这张图片,否则它不是打开的实际路径。让我们暂时忘记图片,想象一下 echo str_replace("\\","", json_encode($row66));是一个常数,所以我们不考虑它。我们需要思考的是如何让新的生产线运转起来。
  • 这有多愚蠢?听起来您只是没有正确解码应用程序中的数据。检查您的数据传输并正确封装它,到目前为止它已损坏(或更可能在 ios 端甚至不存在)
  • @hakre 可能和你一样愚蠢,但你处理这类问题的时间更长了。我会查一下。感谢您的建议,但我既不欣赏语言也不欣赏您的反对意见,因此您现在可以离开。即使你是扎克伯格本人,这里也不需要你的帮助。
  • 在 PHP 中执行 json_encode 操作。有用。无需对它的返回值应用更改。只是传递它。另一方面解码json字符串。完毕。只是意味着编码某些东西然后不解码它只是完成了一半的工作。

标签: php ios json api


【解决方案1】:

您无需更换。只需返回编码数组。

例如你在前端获取这个 json:

{"name":"Some name","image":"\/uploads\/some_dir\/lol.jpg"}

尝试在浏览器控制台中使用它:

var str = {"name":"Some name","image":"\/uploads\/some_dir\/lol.jpg"};
console.log(str);
console.log(str.image)

你会得到正常的数据:

这样您就可以在应用程序中解码 json 并使用图像 url。

【讨论】:

  • 谢谢。我认为解决方案也将在应用程序端,我只是不知道我需要在那里解码它。我会尽快尝试。
  • @WhogivesAshit 没问题)如果对您有帮助,请检查它是否已回答)
猜你喜欢
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 2011-09-02
  • 1970-01-01
相关资源
最近更新 更多