2

我需要使用 PHP 将以下 html 代码添加到 JSON。

<a class="btn btn-mini btn-success" data-toggle="modal" href="#?page=customers-database-edit&id=$1">Edit</a>

如果我直接添加它,则会破坏 JSON 代码,因为它包含双引号 (")。

所以我尝试使用以下代码:

if(is_string($result))
{
  static $jsonReplaces = array(array('\\', '/', '\n', '\t', '\r', '\b', '\f', '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
  return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $result) . '"';
}
else
  return $result;

上面的代码生成 html 是错误的方式:

<a class="\&quot;btn" btn-mini="" btn-success\"="" data-toggle="\&quot;modal\&quot;" href="\&quot;?page=customers-database-edit&amp;id=3\&quot;">Edit&lt;\/a&gt; \n</a>
4

1 回答 1

4

引号对于 json 没有问题。您只需要依赖编码功能。

我制作了这个简单的测试脚本,它编码一个数组并输出 json 编码字符串和再次解码字符串生成的数组。这证明你得到了你输入的东西,不管它是否包含引号。

测试脚本:

<?php
$test=array(
  1=>'one',
  2=>'<a class="btn btn-mini btn-success" data-toggle="modal" href="#?page=customers-database-edit&id=$1">Edit</a>',
  3=>'three'
);
$json=json_encode($test);
echo $json."\n\n";
echo print_r(json_decode($json));
?>

输出:

{"1":"one","2":"<a class=\"btn btn-mini btn-success\" data-toggle=\"modal\" href=\"#?page=customers-database-edit&id=$1\">Edit<\/a>","3":"three"}

stdClass Object
(
    [1] => one
    [2] => <a class="btn btn-mini btn-success" data-toggle="modal" href="#?page=customers-database-edit&id=$1">Edit</a>
    [3] => three
)
于 2012-09-09T13:39:41.633 回答