使用jquery和php在项目符号后插入换行符

qnyhuwrf  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(436)

我有一个页面,用户在html文本区域中输入评论。最近,用户在评论中加入了要点。
以下是用户如何在html文本区域中输入注解的要点:

现在,保存注解后,下面是注解在数据库中的外观:

我在数据库中添加了额外的列,以便清楚地看到有多个条目带有带项目符号的注解。
返回数据后,将注解显示到jquery datatable单元格中,注解的显示完全如下图所示:

如果您注意到这张图片,要点是段落形式的,而不是像最初在html文本区域中输入时那样分开。
我需要做的是在datatable单元格中出现的每个项目符号后添加一个换行符,使其看起来像最初输入的那样。
我不确定是否需要用mysql来实现这一点,但是下面是查询数据库时php/mysql的外观:

<?php
include("../include/database.php"); 

$select = "SELECT pk, region, loctype, city, twenty, twenty_comm FROM eqpstatus";   
$query = mysqli_query($dbc, $select);

$out = array(); 
while($row = $query->fetch_assoc())
{
    $out[] = $row;
}
echo json_encode($out);
?>

我不确定是否有办法检查mysql查询中的项目符号。
在jquery方面,下面是如何将datatable返回到页面(尽可能缩短):

var newData = 'process/eqpGuide.php'; 

$('#example1').DataTable({      
"ajax": {
    "url": newData,
    "type": "POST",
    "dataSrc": ''
},
"columns": [
  {"data": "region"},
  {"data": "loctype"},
  {"data": "city"},
  {"data": "twenty"},
  {"data": "twenty_comm"} // here is where I need to check for bullet points
],
"iDisplayLength": 25,
"order": [[ 1, "desc" ]],
"paging": false,
"scrollY": 550,
"scrollX": true,
"bDestroy": true,
"stateSave": true,
"autoWidth": true 
});

所以,为了重申我提到的所有内容,我需要做的只是涉及数据库的twenty\u comm部分,即在每个项目符号后添加一个换行符。我不确定这是否应该或者可以在代码的php/mysql部分完成,或者是否可以在datatable的jquery端完成。
问:在php/mysql或jquery中,如何在项目符号后添加换行符?

pgx2nnw8

pgx2nnw81#

编辑
我认为最好的办法是在用户提交文本时添加新行。。。在保存到数据库之前。但这是一种观点。
第二个最好的方法是在服务器端执行字符串操作,因为依赖客户机的设备(我删除的最差的解决方案…)在服务器上执行操作被认为是不好的做法。
试试这个:

<?php
include("../include/database.php"); 

$select = "SELECT pk, region, loctype, city, twenty, twenty_comm FROM eqpstatus";   
$query = mysqli_query($dbc, $select);

$out = array(); 
while($row = $query->fetch_assoc())
{
    $row['twenty_comm'] = implode("<br>•",explode("•",$row['twenty_comm']));
    if(substr($row['twenty_comm'],0,4)=="<br>"){
        $row['twenty_comm'] = substr($row['twenty_comm'],4);
    }

    $out[] = $row;
}
echo json_encode($out);
?>
djmepvbi

djmepvbi2#

你可以试着用 preg_split() 用你的 twenty_comm 列并添加 <br /> char,不知道它将如何呈现:

$row['twenty_comm'] = addNewLine($row['twenty_comm']); 

function addNewLine($string){
   $newString = '';
   $split= preg_split("/[;,]+/",$string);
   foreach($split as $char){
        $newString.=$char.'<br />'; 
   }
      return $newString;
}
m1m5dgzv

m1m5dgzv3#

我猜你的意思是你想在子弹前面加一个换行符,在子弹后面加一些空格?不可能知道后面是什么,除非就在下一颗子弹之前。你可以用一根柱子 render 回拨:

{ data: 'twenty_comm' ,
  render: function(data) {
     return data
       .replace(/•/g,'•&nbsp;&nbsp;')
       .replace(/(?!^)(•)/g, '<br>\$1')
  }
}

第一个正则表达式只是将bullet(或middot)替换为一个bullet和两个whitepaces。接下来是负面展望 <br> 在子弹之前,除了第一次出现。
看到了吗http://jsfiddle.net/cj6nk8yz/

相关问题