За последние 24 часа нас посетили 23207 программистов и 1693 робота. Сейчас ищут 1157 программистов ...

Что не так с регуляркой?

Тема в разделе "Регулярные выражения", создана пользователем pozitivman, 22 окт 2010.

  1. pozitivman

    pozitivman Активный пользователь

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

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

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

    pozitivman Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Сделано.