Показать сообщение отдельно
  #1 (permalink)  
Старый 23.10.2010, 15:38
man man вне форума
Интересующийся
Отправить личное сообщение для man Посмотреть профиль Найти все сообщения от man
 
Регистрация: 22.08.2009
Сообщений: 14

Что не так с регуляркой?
Есть регулярное выражение, которое парсит ббкод [_img][_/img]
$a = "#\[img\]((http|ftp|https|ftps)://)(.*?)(\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]#sie";
$b = "'<a href=\'\\1'.str_replace(array('?','&','&','='),'','\\3').'\\4\' class=\'highslide\' onclick=\'return hs.expand(this)\' />
<img src=\'\\1'.str_replace(array('?','&','&','='),'','\\3').'\\4\' alt=\'\\3\\4\' style=\'border:0px\' class=\'forum-img\' />
</a>'";
$text = preg_replace($a,$b,$text);

На выходе я ожидаю получить <_a href=бла бла бла><_img src=бла бла бла><_/a>, но вместо этого ссылка съедается и я получаю только остатки ><_img src=бла бла бла><_/a> - как видите, нехватает начала тега. Это есл смотреть исходник страницы, на самой же странице отображается картинка с знаком > перед картинкой...

Путем не хитрых манипуляций я выяснил что проблема onclick=\'return hs.expand(this)\', если это действие убрать, то ссылка нормально отображается, но уже невыполняет нужных функций
Экранировал точку и скобки - все-равно неработает(

В чем может быть проблема?
Ответить с цитированием