пробую написать свой парсер для замещения на теги. и вот проблема. нужно вот это
[list]
[*] hello
[*] привет
[/list]
сделать с так, чтобы я мог заменить это на такой текст.
<ul>
<li> hello </li>
<li> привет </li>
</ul>
я сначала пробывал в ide это делать, но проверять долго. потом нашел сайт где можно проверить на совпадения по регулярке. И вот уже на этом месте ошибка. вот что я смог сделать.
\[list\]{1}(\[*\]([a-z]+){0,})
и ничего не определяется, я пока плохо знаю регулярки. можно ли вообще заменить как я хочу?
Обновлено.
я составил такую регулярку, вроде правильная. вот какая получилась.
((\[list\]){1})*((\[[*]\]{1}.*)([a-z]+)*){0,}((\[\/list\]){1})*
теперь как мне получить доступ к элементу, который находится после [*]?
Вот пример
$re = '/\[list\](.*?)\[\/list\]/s';
$re_items='/\[\*\]\s(.*?)$/m';
$str = '
[list]
[*] hello
[*] привет
[/list]
[list]
[*] hello1
[*] привет2
[/list]';
preg_match_all($re, $str, $matches, PREG_PATTERN_ORDER);
if ( count($matches) == 0 ) {
echo "Matched nothing!\n";
} else {
foreach ($matches[1] as $val) {
preg_match_all($re_items, $val, $items, PREG_PATTERN_ORDER, 0);
echo "<ul>\n";
foreach ($items[1] as $item){
echo "<li>$item</li>\n";
}
echo "<\ul>\n";
}
}
Вывод
<ul>
<li>hello
</li>
<li>привет
</li>
</ul>
<ul>
<li>hello1
</li>
<li>привет2
</li>
</ul>
Вообще у вас вариант BBcode. Лучше использовать готовый парсер.
Более подробно о BBcode.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Решила создать мини скрипт новостной ленты на phpВот содержимое файла news
Разрабатываю локально небольшой проект на symfonyИспользую докер