【问题标题】:double quote input is breaking the json structure how to fix that双引号输入破坏了 json 结构如何解决
【发布时间】:2013-10-15 13:57:09
【问题描述】:

我正在尝试从用户那里获取输入 当我输入像“kaushik”这样的输入时,json输出不会出现

这是我的代码

<?php
if(!empty($_POST['name'])){
    $name = strip_tags(@$_POST['name']);
    //echo $name;
    $json = '{
                "a":"'.$name.'",
                "b":"Kishore",
                "c":"ramesh",
                "d":"Suresh",
                "e":"ramu"
            }';
    $jsonOutput = json_decode($json,true);
    print_r($jsonOutput);
}
?>
<form name = "myform" action = "" method = "POST">
    Name <input type = "name" name = "name"/></br>
    <input type= "Submit" name = "submit" value = "show"/>
</form>

【问题讨论】:

  • 为什么不把它做好,让json_encode()处理转义?另外,您确定是否曾经输入过该方法?
  • @Pekka웃 我必须接受用户的输入。我该怎么做?
  • 我已经测试了你的脚本,它的输出是正确的。
  • 我现在正在使用 json_encode 。非常感谢

标签: php json concatenation


【解决方案1】:

您需要先转义双引号。即\" 代替"

$name = addslashes($name);

但是,通常您不想自己生成 JSON。您最好创建一个数组并让json_encode() 完成这项工作。

【讨论】:

  • kaushik 'kishore' 在这种情况下或在单引号情况下失败。
  • 单引号是比这更好的解决方案。
  • 执行addslashes 的问题在于,您可能会遇到不需要转义某些内容的情况,一旦您运行addslashes,您就会遇到正确的值转义问题.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
相关资源
最近更新 更多