Php 传递html时发生JSON错误
我有JSON的问题,传递html代码,我不明白,因为我用addslashes php函数转义了 这是失败的JSON: 使用php JSON是有效的:Php 传递html时发生JSON错误,php,ajax,json,escaping,Php,Ajax,Json,Escaping,我有JSON的问题,传递html代码,我不明白,因为我用addslashes php函数转义了 这是失败的JSON: 使用php JSON是有效的: <?php if(count($articles)): ?> {"items":[ <?php foreach($articles as $key => $article): ?> <?php if($key==0 ):?> { "foto_g": "<?ph
<?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 ?>
{“项目”:[
{
“foto_g”:“,
“foto_th”:”
}
,
{
“foto_g”:“,
“foto_th”:”
}
],
“姓名”:”
,
“描述”:”
}
出现问题的结果是:
{
"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>"
}
{
“描述”:“El delta de l'Ebre ha estat l'escenari d'inspiració;d'aquesta col·;lecció
“每一卷铝合金材料的颜色和形状都不相同。”
}
什么时候出问题了
谢谢大家不要那样做!在PHP中正确构造JSON:
<?php
echo json_encode(array
(
"descripcio_coleccio" => $coleccio->getDescripcio(ESC_RAW)
));
?>
不要那样做!在PHP中正确构造JSON:
<?php
echo json_encode(array
(
"descripcio_coleccio" => $coleccio->getDescripcio(ESC_RAW)
));
?>
这些单引号不应转义:
{
"descripcio_coleccio": "<p>Eldeltadel'Ebrehaestatl'escenarid'inspiraciód'aquestacol·lecció.</p><p>Lalíniadel'horitzóielcolordelpaisatgematerialitzatsenaluminis'uneixenperacrearvolumenformadejoia.</p>"
}
{
“描述:”Eldertadel'Ebrehasestatel'escenarid'inspiració;d'aquestacol·;lecció;Lalí;niadel'horitzó;IelColordelPagementGematerialitzatsenaluminis'Uneixeneperararacurevolumermadejoia.”
}
这些单引号不应转义:
{
"descripcio_coleccio": "<p>Eldeltadel'Ebrehaestatl'escenarid'inspiraciód'aquestacol·lecció.</p><p>Lalíniadel'horitzóielcolordelpaisatgematerialitzatsenaluminis'uneixenperacrearvolumenformadejoia.</p>"
}
{
“描述:”Eldertadel'Ebrehasestatel'escenarid'inspiració;d'aquestacol·;lecció;Lalí;niadel'horitzó;IelColordelPagementGematerialitzatsenaluminis'Uneixeneperararacurevolumermadejoia.”
}
如果可能,您应该使用正确的编码功能。在使用JSON的情况下,即使只是针对特定的值,也应该使用JSON
但如果您使用关联键收集数组中的值,并仅在末尾使用json\u 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);
}
如果可能,您应该使用适当的编码功能。在使用JSON的情况下,即使只是针对特定的值,也应该使用JSON 但如果您使用关联键收集数组中的值,并仅在末尾使用
json\u 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);
}
你重新实现json_encode有什么特别的原因吗?在我看来,你是在嵌入调用来对数据进行编码,而不是调用的结果。@mario是的,但我的结构更大,我编辑过。也许你应该展示一下你真正在做什么。这并不能解释为什么你不先用奇怪的循环创建数组结构,或者至少对字符串值使用json_encode,而不是手动将其封装在
“
double quotes。您重新实现json_encode有什么特别的原因吗?很糟糕?在我看来,您是在嵌入调用来对数据进行编码,而不是调用的结果。@mario是的,但我的结构更大,我编辑过。也许你应该展示一下你真正在做什么。这并不能解释为什么你不先用奇怪的循环创建一个数组结构,或者至少对字符串值使用json_编码,而不是手动将其包含在“
双引号。是的,但我的JSON更大。我用所有的JSON写了一篇文章。是的,但是我的JSON更大。我用所有的JSON标记了这篇文章。