JSON 传递 html 时出错

发布于 2025-01-06 20:28:43 字数 1245 浏览 0 评论 0原文

我在传递 html 代码时遇到 JSON 问题,我不明白,因为我用 addslashes php 函数转义了。

这是失败的 JSON:

对于 php JSON 是有效的:

<?php if(count($articles)): ?>
{"items":[
<?php foreach($articles as $key => $article): ?>
      <?php if($key==0  ):?>
      {
        "foto_g": "<?php echo $article->getRutafoto() ?>",
        "foto_th": "<?php echo $article->getRutathumb() ?>"

      }
    <?php else: ?>  
    ,
      {
        "foto_g": "<?php echo $article->getRutafoto() ?>",
        "foto_th": "<?php echo $article->getRutathumb() ?>"

      }
    <?php endif ?>  
<?php endforeach ?>
],
"nom_coleccio": "<?php echo $coleccio->getNom()?>"
,
"descripcio_coleccio": "<?php echo addslashes($coleccio->getDescripcio(ESC_RAW))?>"
}
<?php endif ?>  

有问题的结果是:

{
"descripcio_coleccio": "<p>El delta de l\'Ebre ha estat l\'escenari d\'inspiraci&oacute; d\'aquesta col&middot;lecci&oacute;.</p>
<p>La l&iacute;nia de l\'horitz&oacute; i el color del paisatge materialitzats en alumini s\'uneixen per a crear volum en forma de joia.</p>"
}

问题是什么时候?

谢谢问候

I have problem with JSON, passing html code, I don't understand because I escaped with addslashes php function.

This is the JSON that fail:

With php JSON is valid:

<?php if(count($articles)): ?>
{"items":[
<?php foreach($articles as $key => $article): ?>
      <?php if($key==0  ):?>
      {
        "foto_g": "<?php echo $article->getRutafoto() ?>",
        "foto_th": "<?php echo $article->getRutathumb() ?>"

      }
    <?php else: ?>  
    ,
      {
        "foto_g": "<?php echo $article->getRutafoto() ?>",
        "foto_th": "<?php echo $article->getRutathumb() ?>"

      }
    <?php endif ?>  
<?php endforeach ?>
],
"nom_coleccio": "<?php echo $coleccio->getNom()?>"
,
"descripcio_coleccio": "<?php echo addslashes($coleccio->getDescripcio(ESC_RAW))?>"
}
<?php endif ?>  

And the result that have problem is:

{
"descripcio_coleccio": "<p>El delta de l\'Ebre ha estat l\'escenari d\'inspiració d\'aquesta col·lecció.</p>
<p>La línia de l\'horitzó i el color del paisatge materialitzats en alumini s\'uneixen per a crear volum en forma de joia.</p>"
}

When is the problem?

Thanks Regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

土豪 2025-01-13 20:28:43

如果可能的话,您应该使用正确的编码函数。如果是 JSON,您应该使用 json_encode,即使只是针对特定值。

但是,如果您使用关联键收集数组中的值并仅在最后使用 json_encode ,则会更容易:

if (count($articles)) {
    $items = array();
    foreach ($articles as $key => $article) {
        $items[] = array(
            "foto_g"  => $article->getRutafoto(),
            "foto_th" => $article->getRutathumb()
        }
    }
    $data = array(
        "items"               => $items,
        "nom_coleccio"        => $coleccio->getNom(),
        "descripcio_coleccio" => $coleccio->getDescripcio(ESC_RAW)
    );
    echo json_encode($data);
}

You should use proper encoding functions if possible. In case of JSON you should use json_encode, even if just for particular values.

But it would be easier if you collect the values in an array with associative keys and use json_encode only at the end:

if (count($articles)) {
    $items = array();
    foreach ($articles as $key => $article) {
        $items[] = array(
            "foto_g"  => $article->getRutafoto(),
            "foto_th" => $article->getRutathumb()
        }
    }
    $data = array(
        "items"               => $items,
        "nom_coleccio"        => $coleccio->getNom(),
        "descripcio_coleccio" => $coleccio->getDescripcio(ESC_RAW)
    );
    echo json_encode($data);
}
情深如许 2025-01-13 20:28:43

不要那样做!在 PHP 中正确构建 JSON:

<?php
        echo json_encode(array
        (
            "descripcio_coleccio" => $coleccio->getDescripcio(ESC_RAW)
        ));
?>

Don't do that! Construct the JSON properly in PHP instead:

<?php
        echo json_encode(array
        (
            "descripcio_coleccio" => $coleccio->getDescripcio(ESC_RAW)
        ));
?>
涫野音 2025-01-13 20:28:43

这些单引号不应被转义:

{
    "descripcio_coleccio": "<p>Eldeltadel'Ebrehaestatl'escenarid'inspiraciód'aquestacol·lecció.</p><p>Lalíniadel'horitzóielcolordelpaisatgematerialitzatsenaluminis'uneixenperacrearvolumenformadejoia.</p>"
}

Those single quotes shouldn't be escaped:

{
    "descripcio_coleccio": "<p>Eldeltadel'Ebrehaestatl'escenarid'inspiraciód'aquestacol·lecció.</p><p>Lalíniadel'horitzóielcolordelpaisatgematerialitzatsenaluminis'uneixenperacrearvolumenformadejoia.</p>"
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文