PHP mysqli从数据库表的每一行生成列表项


php mysqli generate list items from each line in database table

我在我的数据库中有一个名为"职责"的表

Progressing of new Engineering & Technical enquiries from client
Expediting jobs
Resolving any client's requests
Quote processing
Communicating and liaising between client and Team Leader
Progressing of new repair enquiries
Attend meetings with clients and generating enquiries
Build relationships and obtain new orders from clients
Liaising with customer planners to organise offshore trips
Assisting in the workshop during busy periods

通过Textarea输入到数据库中,每一行都是新的一行。

当输出数据库单元格时,它显示为单行。但是如果我使用nl2br回显它,它会将<br>添加到代码中,因此它显示为一个列表。

$result2 = $con->query('SELECT * FROM role WHERE id = "'.$row['role'].'"');
while ($row2 = $result2->fetch_assoc()) {
    echo "<p>".nl2br($row2['duties'])."</p>";
}

是否有一种方法可以改变它,使它返回每一行而不是<br>,它将是实际的列表项,如以下所示?

<li>Progressing of new Engineering & Technical enquiries from client</li>
<li>Expediting jobs</li>
<li>Resolving any client's requests</li>
<li>Quote processing</li>
<li>Communicating and liaising between client and Team Leader</li>
<li>Progressing of new repair enquiries</li>
<li>Attend meetings with clients and generating enquiries</li>
<li>Build relationships and obtain new orders from clients</li>
<li>Liaising with customer planners to organise offshore trips</li>
<li>Assisting in the workshop during busy periods</li>

while循环中替换:

echo "<p>".nl2br($row2['duties'])."</p>";

$withLineBreaks = nl2br($row2['duties']) ;
echo "<li>" . str_replace ( "<br/>", "</li><li>" , mixed $withLineBreaks) . "</li>";

(如果您在数据的末尾有一个尾随换行符,那么您将在末尾得到一个多余的/空的<li></li> -因此您可能需要先将其修剪掉)。

当然,如果你有正确的正则表达式,你可以直接替换那些换行符,而不是使用nl2br。我无法测试这个,但我认为它应该得到任何常见的换行格式:

echo "<li>" . preg_replace("#['n'r]{1,2}#","</li><li>", $row2['duties']) . "</li>";