在php循环中编写javascript数组时如何将新行转换为实际行\n
我有一段代码,它在PHP代码(从mysql数据库检索)中编写一个JS对象数组,如下所示:在php循环中编写javascript数组时如何将新行转换为实际行\n,javascript,php,arrays,newline,Javascript,Php,Arrays,Newline,我有一段代码,它在PHP代码(从mysql数据库检索)中编写一个JS对象数组,如下所示: echo "var tab = [\n"; while($row = mysql_fetch_row($resultat)){ $numero = $row[0]; $notes = $row[1]; echo "{\n"; echo "numero:\"".$numero."\","; echo "notes:\"".$notes."\" "; echo "\n},"; } echo "\n]"; (我
echo "var tab = [\n";
while($row = mysql_fetch_row($resultat)){
$numero = $row[0];
$notes = $row[1];
echo "{\n";
echo "numero:\"".$numero."\",";
echo "notes:\"".$notes."\" ";
echo "\n},";
}
echo "\n]";
(我为此简化了代码……在实际代码中,删除了最后一个逗号)
问题是:如果我在$notes中有新行,它会阻止JS数组并生成JS解析错误,因为新行在JS代码中是作为真正的新行编写的,而不是像它应该的那样“\n”
例如,文本
"foo bar
foo bar"
应写入JS数组中:
"foo bar\nfoo bar".
我只想写“\n”来代替实际的新行
我试过这个:
$notes = str_replace("\n", '\n', $row[1]);
但是没有成功。
有什么想法吗?我相信如果您在php中不使用斜杠,这会起作用,就像这样:
\\n
我还没有测试过这个,但如果我没记错的话,应该可以
但是,如果您只想在HTML页面上显示文本,为什么不使用一个
标记来代替\n
,这将给您一个实际的突破,即\n
只需在代码中开始一行新行,而只需在浏览器中显示为一个空格,这是将PHP数组转换为JSON的最佳方式,要使用json\u encode
函数:
$rows = [];
while ($row = mysql_fetch_assoc($resultat)) {
$rows[] = $row;
}
echo json_encode($rows);
我不记得是否有更简单的方法通过旧的mysql函数获得整个结果集。我建议您使用PDO而不是mysql\u query
,mysql\u fetch\u row
,等等:
编辑:
如果要将JSON对象分配给变量,例如在
块内,请执行以下操作:
<script>
var myArray = <?= json_encode($rows) ?>;
</script>
var myArray=;
不要手工制作JSON字符串。省去麻烦,只需使用.Non,我不想将页面上的文本显示为html(我会使用nl2br),它是用来动态填充JS数组的。谢谢Ronni。这是一个完美的答案,它就像一个魅力!(我不知道这个函数json_encode…它很强大!)