У меня есть столбец таблицы, который содержит список элементов, разделенных тегом «br» (без новых строк).
Я получаю эти данные и конвертирую теги br в новые строки, как определено ниже.
$nlformat = str_replace("<br>","\n",$mem['mem_services']);
Я также пишу файл в этом PHP-скрипте, который превратит этот список в HTML-список с тегами «li». Это легко, НО, если в списке есть две последовательные новые строки «\ n \ n», я хочу завершить первый список и создать второй список следующим образом …
<ul>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
<ul>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
У меня проблема с указанием двух последовательных новых строк в следующей переменной. Ниже приведен лишь один из множества примеров из других ответов на этот сайт. Никто из них не работает
$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;
Надеюсь, это поможет вам
Других решений пока нет …