php 将文本列表转换为 html 列表

php convert text list into html list

我有一个 table 列,其中包含由 "br" 标记分隔的项目列表(无新行)。

我获取此数据并将 br 标签转换为如下定义的新行。

$nlformat = str_replace("<br>","\n",$mem['mem_services']);

我还在这个 php 脚本中编写一个文件,它将把这个列表变成一个带有 "li" 标签的 html 列表。这很简单,但是如果列表有两个连续的新行“\n\n”,我想结束第一个列表并创建第二个列表,就像这样...

<ul>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
<ul>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>

我在识别以下变量中的 2 个连续新行时遇到问题。以下只是本网站上其他已回答问题的众多示例之一。 None 他们工作

$newul = preg_replace("/\r\n\r\n|\n\n|\r\r/", "</li></ul><ul><li>", $nlformat);

有谁知道为什么。可能与 $nlformat 变量有关。

在当前示例中,我没有对 $nlformat 进行任何更改,即

item
item
item

item
item
item

我对这个问题的处理方式是, 我有一个字符串,中间有 \n 字符。我将首先从中构建一个格式化数组,然后从中构建 html。这样您就可以使用与您的问题相关的代码部分

请尝试这种方式。

$nlFormat="item\nitem\nitem\n\nitem\nitem\nitem";
$tmp_arr1= explode("\n\n",$nlFormat);
$final_arr=array();
// now $tmp_arr1 has n number of sections;
foreach($tmp_arr1 as $section){
    $final_arr[]= explode("\n",$section);
}

//var_dump($final_arr);

现在让我们生成 html

$html="";
foreach($final_arr as $section){
    $html.="<ul><li>";
    $html.=implode("</li><li>",$section);
    $html.="</li></ul>";
}
echo $html;