[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: bbcode и простая регулярка
guest
Нужно преобразование одного единственного bb-тега. Библиотеки прикручивать не хочется.
Нижеприведенная функция работает до тех пор пока все написано в одну строчку. Но как только появляется перенос строки все ломается и не работает. Помогите исправить проблемку.

function bb(){

$search = array (

'~\[spoiler=(.*?)\](\n.*?)\[/spoiler\]~'
);

$replace = array (
"
<div class=
\"f1\">$1</div>
<div class=
\"f1\">$2</div>
"

);

return preg_replace($search, $replace, $bbcode);
}

DedMorozzz
(\n.*?) ----> ([\s.]*?)

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
guest
Спасибо, но нет, не работает...
guest
Перенос строки и функция не отрабатывает.
guest
Кстати, при переносе кода ошибся.

function bb(){

$search = array (

'~\[spoiler=(.*?)\](.*?)\[/spoiler\]~'
);

$replace = array (
"
<div class=
\"f1\">$1</div>
<div class=
\"f1\">$2</div>
"

);

return preg_replace($search, $replace, $bbcode);
}
DedMorozzz
ах да, модификатор m забыл дописать
Итого:
'~\[spoiler=(.*?)\]([\s.]*?)\[/spoiler\]~m'

или так
'~\[spoiler=(.*?)\](.*?)\[/spoiler\]~ms'


не столь важно что там далее или ранее - нас же интересует лишь регулярка :)
Если вхождение найдёт - значит задача решена, а как это вхождение обрабатывать - уже другой вопрос

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
guest
Эээ... не работает...
guest
Я об этом '~\[spoiler=(.*?)\]([\s.]*?)\[/spoiler\]~m'
guest
Второй отрабатывает.
DedMorozzz
А вот это странно, что 2 работает, а 1 - нет
Или слишком поздно и после рабочей недели переутомился или это 2 аналогичные записи...
Ну в общем ладно, чёрт с ним. Не стоит перед сном таким голову забивать, работает и хорошо smile.gif

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Placido
Цитата (DedMorozzz @ 16.08.2013 - 23:53)
А вот это странно, что 2 работает, а 1 - нет
Или слишком поздно и после рабочей недели переутомился или это 2 аналогичные записи...
Ну в общем ладно, чёрт с ним. Не стоит перед сном таким голову забивать, работает и хорошо smile.gif

[\s.] - это пробельный символ или точка. В символьном классе точка - это и есть точка, а не "любой символ".
N0ob
function bb(){

$search = array (

'#\[spoiler=(.*?)\](.*?)\[/spoiler\]#iSum'
);

$replace = array (
"
<div class=
\"f1\">$1</div>
<div class=
\"f1\">$2</div>
"

);

return preg_replace($search, $replace, $bbcode);
}
guest
Последний вариант не работает...
N0ob
guest
<?php
function
bb($bbcode){

$search = array (

'#\[spoiler=(.*?)\](.*?)\[/spoiler\]#iSum'
);

$replace = array (
"
<div class=
\"f1\">$1</div>
<div class=
\"f1\">$2</div>
"

);

return preg_replace($search, $replace, $bbcode);
}

echo bb("[spoiler=test]tratata[/spoiler]");
killer8080
guest
добавь модификатор s, тогда символ "." будет включать и перевод строки.
Мультилайн выброси, он тут лишний.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.