我有一个表格列,其中包含以"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;