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

问题描述:

我有一个表格列,其中包含由“br”标记(没有新行)分隔的项目列表。php将文本列表转换为html列表

我获取这些数据并将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 
+0

你怎么得到期望的结果,而不是? – Barmar

+0

它适用于我:http://ideone.com/5jj6lx – Barmar

+0

@Barmar - 有趣的是,它适用于您所介绍的测试网站,因为我尝试了您使用的代码并上传到我的服务器,但无法正常工作。 – Spaceman

我对这个问题的办法是, 我有了\ 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; 

希望这有助于你

+0

我看到你的建议潜力,因为我能够产生两个数组,现在我只需要玩这个看看我是否可以产生两个HTML列表。 – Spaceman

+0

我还没有试过运行这段代码,请让我知道如果这可以帮助你 –

+1

啊,谢谢你的帮助。非常感谢,因为我不想提及我在preg_replace()方面花费了多少时间。所以我摆脱了var_dump并在$ finalarray []可变的末尾添加了一个分号。奇迹般有效! – Spaceman