Помогите в регуляркой

vxc

Новичок
Помогите в регуляркой

PHP:
function BBCode($string)  	
{ 		  
    $search = array( 	
            '/\[img=(.+?)](.+?)\[\/img]/is',
	    '/\[url=(.+?)](.+?)\[\/url]/is',  );

     $replace = array(
             '<img src="\1" alt="\2">',
	     '<a href="\1" >\2</a>',);

      return preg_replace($search, $replace, $string);
}
     $data="[url=http://site.ru]Сайт[/url]";
     print BBcode($data);
Все бы ничего но если не написать в Сайт слово "Сайт" то ББкод не преобразуется. Возможно ли при отсутствии \2 делает его равным \1 ?

Или другая ситуация [img=http://site.ru/1.jpg]бла-бла-бла[/img]
Бла-бла-бла(то что пойдет в поле ALT ) может быть указано а может быть и нет,возможно ли модернизировать регулярку чтобы при отсутствии этих данных ББкод все-равно конвертился нормально?

Заранее благодарен
 

freeek

Новичок
а ты приведи пример текста, который необходимо преобразовать, небольшой кусочек, можно псевдо
 

vxc

Новичок
Автор оригинала: Вурдалак
PHP:
'/\<a href="http://(.+?)" target="_blank">(.+?)\[\/url]/is'
Что это?
Извиняюсь
PHP:
'/\<a href="http://(.+?)" target="_blank">(.+?)\</a>/is'
Мне нужно чтобы
бб код [img=http://site.com/1.jpg]бла-бла-бла[/img] или [img=http://site.com/1.jpg][/img]
Первращались в <img src='http://site.com/1.jpg' alt='бла-бла-бла'> или <img src='http://site.com/1.jpg' alt=''> соответственно.
 

Вурдалак

Продвинутый новичок
Автор оригинала: vxc
Извиняюсь
PHP:
'/\<a href="http://(.+?)" target="_blank">(.+?)\</a>/is'
Может всё-таки
PHP:
'/\\[url=(.+?)\\](.*?)\\[\\/url\\]/is'
?

Автор оригинала: vxc
Мне нужно чтобы
бб код [img=http://site.com/1.jpg]бла-бла-бла[/img] или [img=http://site.com/1.jpg][/img]
Первращались в <img src='http://site.com/1.jpg' alt='бла-бла-бла'> или <img src='http://site.com/1.jpg' alt=''> соответственно.
Просто замени ".+?" на ".*?":
PHP:
'/\\[img=(.+?)\\](.*?)\\[\\/img\\]/is'
P.S. Кстати, позаботься о защите против XSS
 
Сверху