2015-05-21 26 views
-1

我在php脚本中有以下简单的json。json字符串中的HTML导致错误

echo '{"rows":"'.$rows.'", "other_prop":{}}'; 

$rows是:

<tr><td>this is gant</td> 
     <td>2015-05-21 12:42:11</td> 
     <td><pre>[gant id="135"]</pre></td> 
     <td><a href="#" class="button load-gant" data-gantname="_GANT_this_is_gant__2015-05-21 12:42:11">Load</a> <a href="" class="button delete-gant red" data-gantname="_GANT_this_is_gant__2015-05-21 12:42:11">Delete</a></td></tr><tr><td>bunda</td> 
     <td>2015-05-21 12:47:36</td> 
     <td><pre>[gant id="139"]</pre></td> 
     <td><a href="#" class="button load-gant" data-gantname="_GANT_bunda__2015-05-21 12:47:36">Load</a> <a href="" class="button delete-gant red" data-gantname="_GANT_bunda__2015-05-21 12:47:36">Delete</a></td></tr> 

JSON皮棉一直说

Parse error on line 2: 
{ "rows": "<tr><td>this is gan 
-------------^ 
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[' 

我所没有试图逃跑每个双引号,并且还使用htmlentities()逃脱每标签。但皮棉仍然用同样的话说。

最新的问题,以及如何解决这个问题?

+0

呃... ...'$ rows'不包含JSON。 –

+0

@YUNOWORK:已更新。行只是一个字符串作为其值的属性 –

+0

@DarielPratama我的猜测是,你的问题是你的'''没有在html中转义并且打破了JSON字符串。你能发布你通过lint放入的整个JSON吗?还是看到我的答案代码,为您处理这个 – EdgeCaseBerg

回答

1

工作细跟的$rows

<tr><td>thisisgant</td><td>2015-05-2112: 42: 11</td><td><pre>[gant id='135']</pre></td><td><a href='#' class='buttonload-gant' data-gantname='_GANT_this_is_gant__2015-05-2112: 42: 11'>Load</a> <a href='' class='buttondelete-gantred' data-gantname='_GANT_this_is_gant__2015-05-2112: 42: 11'>Delete</a></td></tr><tr><td>bunda</td> <td>2015-05-21 12:47:36</td><td><pre>[gant id='139']</pre></td><td><a href='#' class='button load-gant' data-gantname='_GANT_bunda__2015-05-21 12:47:36'>Load</a> <a href='' class='button delete-gant red' data-gantname='_GANT_bunda__2015-05-21 12:47:36'>Delete</a></td></tr> 

该值只要保持在其有效值在单行中并全部替换为"'

0

为什么不使用json_encode和php对象?例如:

<?php 
$rows =<<<HTML 
<tr><td>this is gant</td> 
<td>2015-05-21 12:42:11</td> 
<td><pre>[gant id="135"]</pre></td> 
<td><a href="#" class="button load-gant" data-gantname="_GANT_this_is_gant__2015-05-21 12:42:11">Load</a> <a href="" class="button delete-gant red" data-gantname="_GANT_this_is_gant__2015-05-21 12:42:11">Delete</a></td></tr><tr><td>bunda</td> 
<td>2015-05-21 12:47:36</td> 
<td><pre>[gant id="139"]</pre></td> 
<td><a href="#" class="button load-gant" data-gantname="_GANT_bunda__2015-05-21 12:47:36">Load</a> <a href="" class="button delete-gant red" data-gantname="_GANT_bunda__2015-05-21 12:47:36">Delete</a></td></tr> 
HTML; 
$obj = new stdClass(); 
$obj->rows = $rows; 
echo json_encode($obj); 

这产生的代码:

{"rows":"<tr><td>this is gant<\/td>\r  <td>2015-05-21 12:42:11<\/td>\r\t  <td><pre>[gant id=\"135\"]<\/pre><\/td>\r\t\t  <td><a href=\"#\" class=\"button load-gant\" data-gantname=\"_GANT_this_is_gant__2015-05-21 12:42:11\">Load<\/a> <a href=\"\" class=\"button delete-gant red\" data-gantname=\"_GANT_this_is_gant__2015-05-21 12:42:11\">Delete<\/a><\/td><\/tr><tr><td>bunda<\/td>\r\t\t\t  <td>2015-05-21 12:47:36<\/td>\r\t\t\t\t  <td><pre>[gant id=\"139\"]<\/pre><\/td>\r\t\t\t\t\t  <td><a href=\"#\" class=\"button load-gant\" data-gantname=\"_GANT_bunda__2015-05-21 12:47:36\">Load<\/a> <a href=\"\" class=\"button delete-gant red\" data-gantname=\"_GANT_bunda__2015-05-21 12:47:36\">Delete<\/a><\/td><\/tr>"} 

根据JSON棉绒

0

你要这样定义你的变量使用它在JSON,这将是字符串..

$row="<tr><td>this is gant</td>"+ 
    "<td>2015-05-21 12:42:11</td>"+ 
    "<td><pre>[gant id='135']</pre></td>"+ 
    "<td><a href='#' class='button load-gant' data-gantname='_GANT_this_is_gant__2015-05-21 12:42:11'>Load</a><a href='' class='button delete-gant red' data-gantname='_GANT_this_is_gant__2015-05-21 12:42:11'>Delete</a></td></tr><tr><td>bunda</td>"+ 
    "<td>2015-05-21 12:47:36</td>"+ 
    "<td><pre>[gant id='139']</pre></td>"+ 
    "<td><a href='#' class='button load-gant' data-gantname='_GANT_bunda__2015-05-21 12:47:36'>Load</a> <a href='' class='button delete-gant red' data-gantname='_GANT_bunda__2015-05-21 12:47:36'>Delete</a></td></tr>"; 
相关问题