javascript - 在 php 循环中写入 javascript 数组时如何将新行转换为实际\n

标签 javascript php arrays newline

我有一段代码,它在 PHP 代码中写入 JS 对象数组(从 mysql 数据库检索),如下所示:

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 数组转换为 JSON 的最佳方法是使用 json_encode功能:

$rows = [];
while ($row = mysql_fetch_assoc($resultat)) {
    $rows[] = $row;
}
echo json_encode($rows);

我不记得是否有更简单的方法来通过旧的 mysql 函数获取整个结果集。我建议您使用 PDO 而不是 mysql_query , mysql_fetch_row等:http://www.php.net/manual/en/book.pdo.php

编辑:

如果要将 JSON 对象分配给变量,例如里面 <script>阻止,执行以下操作:

<script>
var myArray = <?= json_encode($rows) ?>;
</script>

关于javascript - 在 php 循环中写入 javascript 数组时如何将新行转换为实际\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23012508/

相关文章:

javascript - 将 CSS 样式添加到 SVG

javascript - tinyMCE 头部样式

php - 将网页导出为 PDF(使用 PHP)

php - 每次都得到相同的答案

java - 不明白 Arrays.copyOf 的源码

javascript - 从回调函数中获取变量

javascript - 如何使用 fetch API 的响应正文将一些数据从服务器发送回浏览器

php - Laravel/SQL 按流行度/趋势排序

c - 数组和链表哪个性能最好(就访问速度而言)

javascript - JS 中的动态 if 语句