PHP将文本列表转换为HTML列表


php convert text list into html list

我有一个表格列,其中包含以"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个连续的新行有问题。下面只是这个网站上许多回答问题的例子之一。它们都不工作

$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;