Регулярные выражения

cdi

Новичок
Регулярные выражения

Вопрос наверняка тривиальный, но ответ мне не удалось найти самостоятельно. Не нашёл его и в сети.
Задача: есть текст заключённый в теги, например, [y]qwerty[/y], [e]werty[e] т.д. (в квадратных скобках конечно буквы другие) необходимо сделать замену соответственно <u>qwerty</u>, <i>qwerty</i> и если набран какой-то «мусор» по возможности избавиться от него. Сделал так:
PHP:
$search_mess=array("/(?:\[(|\/)u\])+/i");
$replace_mess=array("<\\1u>");
$msg="[u][u][/u][/u][u]qwerty[/u] 
$msg=preg_replace($search_mess,$replace_mess,$msg);
Может быть есть более эффективный/оптимальный вариант?

И теперь основной вопрос: есть текст заключённый в теги – [yrl]http://qwerty.ru[/yrl] (в скобках url) необходимо заменить ВО ВСЁМ тексте ВСЕ совпадения на<a href=”http://qwerty.ru”></a>
и по возможности убрать мусор. Пробую вот это:
PHP:
$msg=preg_replace("/(.*)(?:\[url\])+(.+)(?:\[\/url\])+(.*)/i","\\1<a href=\\2>\\2</a>\\3",$msg);
как заменить ВО ВСЁМ тексте ВСЕ совпадения? В этом случае заменяется только последнее совпадение.
В общем сделать как сдесь на сайте.
 

Фанат

oncle terrible
Команда форума
я делаю сначала прег_матч_алл, получаю массив, обрабатываю его, а потом делаю стр_реплейс с исходного массива на исправленный.
В цикле по всем тегам

Мусор, конечно же, не убираю - если бы его, к примеру, на этм форуме убирали, то ты бы не смог внятно задать свой вопрос - все бы повырезали.
 

Фанат

oncle terrible
Команда форума
jer
я с удовольствием выслушаю твои замечания.
 

вовчик

Guest
PHP:
$string = "[b ]hello lol[/b ]";
$str=str_replace("[b ]","<b>",$string);
$str=str_replace("[/b ]","</b>",$str);
print $str;
 

WeirD

Новичок
PHP:
$string = "[b ]test[/b ] test1 [b ]test2[/b ]";
$string = preg_replace("#\[b\](.+?)\[/b\]#is","<b>\\1</b>",$string);
print $string;
И что касается url

PHP:
$string = "[url=http://www.google.com ]www.google.com[/url ]";
$string = preg_replace("#\[url=(.+?)\](.+?)\[/url\]#is","<a href=\"\\1\">\\2</a>",$string);
print $string;
 

cdi

Новичок
А по поводу всех замен совпадений ? Или только в комплекте с прег_матч_алл
 

Фанат

oncle terrible
Команда форума
cdi постарайся выразить свою мысль более связно.
 

WeirD

Новичок
PHP:
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
Выполняет поиск в строке subject совпадений с шаблоном pattern и заменяет их на replacement. В случае, если параметр limit указан, будет произведена замена limit вхождений шаблона; в случае, если limit опущен либо равняется -1, будут заменены все вхождения шаблона .
 
Сверху