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;
我有一个 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;