我从mysql数据库中获取数据时遇到问题。让我说我在mysql表中有这样的文字:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse lobortis sit amet est in dapibus. Cras in dui diam.
这个新行解决了这个问题。
我使用jQuery将数据回显给auto creatinig div。
以下是代码:
for(i = <?php echo $row; ?>; i > 0; i--){
count = 1;
<?php
while($col = mysqli_fetch_assoc($result))
{
$cols[] = $col;
}
foreach($cols as $col){
?>
$("#text"+count+"").text("<?php echo $col['post'] ?>");
$("#username"+count+"").text("<?php echo $col['username'] ?>");
count++;
<?php } ?>
}
我尝试删除新行,或者使用<br>
之类的字符串替换替换str_replace("\n", '<br />', $col['post']);
,但它不起作用。我也尝试了很多其他代码,没有任何方法可以帮助我。
感谢您的建议
答案 0 :(得分:1)
你可以更好地分离你的数据库访问逻辑和客户端javascript的东西。您还可以使用nl2br()
将换行符转换为<br>
。所以这样的事情会更好。
<?php
$rows = array();
while($row = mysqli_fetch_assoc($result)) {
// replace new lines in post with HTML breaks
$row['post'] = nl2br($row['post']);
$rows[] = $row;
}
?>
<script>
// create javascript literal by echoing out JSON serialization of $rows from PHP
var dbRows = <?php echo json_encode($rows); ?>;
// iterate through DB records and create elements
$.each(dbRows, function(index, row) {
$('<div class="text">').text(row.post).appendTo('#someTargetElement');
$('<div class="username">').text(row.username).appendTo('#someTargetElement');
});
</script>
您的方法有一些变化,包括:
nl2br()
以准备在HTML中使用。#text*
反模式。 id标签添加了什么价值?通常在使用像jQuery这样的库时,您希望所有类似的项具有相似的类,以便您可以将它们作为一个类进行操作。答案 1 :(得分:0)
第一个
如果字符串输出到textarea或pre标签,\n
将在字符串中生成新行。如果您不想换行,只需删除\n
。
第二个
如果字符串输出到另一个HTML标记,<br>
将生成新行,只需将其删除即可停止转到新行。
第三次
在PHP中,您可以通过使用const PHP_EOL
的concat字符串在长字符串中添加新行。例如:"Hello" . PHP_EOL . "Wolrd"
在jQuery中,$ .text()会将转义字符串放入elment的文本节点(内容),$ .html()会将原始html(作为字符串)插入到文档中。
最后
请不要将您的PHP代码放在一起Javascript。