#php #html #regex
#php #HTML #регулярное выражение
Вопрос:
Я не могу разобраться в этом, и мне действительно не помешала бы некоторая помощь.
Я хочу заменить текст следующим образом
[list]line 0
line 1
line 2
[/list]
с помощью
<ul><li>line 0</li>
<li>line 1</li>
<li>line 2</li>
</ul>
Он может появляться в строке несколько раз, и было бы здорово, если бы он мог избежать добавления пустых элементов списка.
Ответ №1:
Вот мой специальный BBParser. Потратил на это целую вечность.
Используйте это следующим образом:
$parse = new bbParse();
$pageContent = $parse->bbtohtml($dbContent);
Комментарии:
1. Спасибо, он заменяет тег [/list], но тег [list] остается таким, какой он есть. Когда я удаляю символы r n, он также заменяет тег [list], но он не вставляет <li></li> вокруг каждой строки между этими тегами.
2. Хорошо, я разобрался, он ожидает [*] в начале каждой строки. Это действительно имеет смысл. Спасибо.
3. Как бы я использовал это дважды в одном PHP-файле? Если я пытаюсь использовать его дважды, он сообщает о неустранимой ошибке: не удается повторно объявить htmltags() (ранее объявленный в bbparser.php:85)
4. Переместите функцию HtmlTags из функции.
5. Спасибо, но затем там было сказано то же самое о bbtohtml (), поэтому я превратил его в обычную функцию. Я терплю неудачу в ООП. 🙂
Ответ №2:
preg_replace('#[list](.*?)[/list]', $data, $list);
$list[1] = explode("n", $list);
$html = '<ul>';
foreach($list[1] as $li){
$html .= '<li>'.$li.'</li>';
}
$html .= '</ul>';