Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Что не так с регуляркой? (https://javascript.ru/forum/server/12566-chto-ne-tak-s-regulyarkojj.html)

man 23.10.2010 15:38

Что не так с регуляркой?
 
Есть регулярное выражение, которое парсит ббкод [_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)\', если это действие убрать, то ссылка нормально отображается, но уже невыполняет нужных функций
Экранировал точку и скобки - все-равно неработает(

В чем может быть проблема?

man 23.10.2010 16:07

Разобрался. Можно закрыть тему.


Часовой пояс GMT +3, время: 18:14.