我正在使用PHP从MYSQL读取文本字段(说明)并准备JSON对象。模拟JQUERY DataTables插件示例。如何从PHP返回从MySQL返回的文本字段回车?
DESCRIPTION字段包含回车符,我相信这会导致无效的JSON。 JSONLINT.com会生成“语法错误,第35行出现意外的TINVALID”,解析失败“。
http://ageara.com/exp3/server_processing_details_col.php应返回有效的JSON
我试图使用PHP TRIM()函数删除CR但没有多少运气。
相关的PHP代码如下....
$rResult = mysql_query($sQuery, $gaSql['link']) or die(mysql_error());
$sQuery = "
SELECT FOUND_ROWS()
";
$rResultFilterTotal = mysql_query($sQuery, $gaSql['link']) or die(mysql_error());
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
$iFilteredTotal = $aResultFilterTotal[0];
$sQuery = "
SELECT COUNT(TITLE)
FROM geometa_small
";
$rResultTotal = mysql_query($sQuery, $gaSql['link']) or die(mysql_error());
$aResultTotal = mysql_fetch_array($rResultTotal);
$iTotal = $aResultTotal[0];
/* write the JSON output */
$sOutput = '{';
$sOutput .= '"sEcho": '.intval($_GET['sEcho']).', ';
$sOutput .= '"iTotalRecords": '.$iTotal.', ';
$sOutput .= '"iTotalDisplayRecords": '.$iFilteredTotal.', ';
$sOutput .= '"aaData": [ ';
while ($aRow = mysql_fetch_array($rResult))
{
$sOutput .= "[";
$sOutput .= '"<img src=\"details_open.png\">",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['TITLE']).'",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['DATA_CUSTODIAN_ORGANIZATION']).'",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['RECORD_TYPE']).'",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['RESOURCE_STATUS']).'",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['RESOURCE_STORAGE_LOCATION']).'",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['UNIQUE_METADATA_URL']).'",';
$sOutput .= '"'.trim(str_replace('"', '\"', $aRow['DESCRIPTION']), "/r").'"';
$sOutput .= "],";
}
$sOutput = substr_replace($sOutput, "", -1);
$sOutput .= '] }';
echo $sOutput;
function fnColumnToField($i)
{
/* Note that column 0 is the details column */
if ($i == 0 ||$i == 1)
return "TITLE";
else if ($i == 2)
return "DATA_CUSTODIAN_ORGANIZATION";
else if ($i == 3)
return "RECORD_TYPE";
else if ($i == 4)
return "RESOURCE_STATUS";
else if ($i == 5)
return "RESOURCE_STORAGE_LOCATION";
else if ($i == 6)
return "UNIQUE_METADATA_URL";
else if ($i == 7)
return "DESCRIPTION";
}
?>
由于Tandu。尝试 – user468648 2010-10-10 05:26:08
str_replace(array(“\ r”,“\ n”),array('',''),$ sOutput); echo $ sOutput;但没有工作,将查找到json_encode() – user468648 2010-10-10 05:33:34
好的答案,甚至进一步,你可以改变代码为'str_replace(array(“\ r”,“\ n”),'\ n',$ mysqldata);' ,因为''\ n''不会再被认为是PHP中的换行符(它会被看作只是两个字符 - '\'和'n'),但是当JavaScript在另一侧解析它时,会将它们视为换行符。 (另外,你可以用一个字符串替代多个字符串,第一个变量使用一个数组,第二个字符串替换为'str_replace()'。) – 2010-10-10 10:03:00