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

Тема в разделе "PHP", создана пользователем Jed7777, 7 апр 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Jed7777

    Jed7777 Постоялец

    Регистр.:
    17 июл 2008
    Сообщения:
    136
    Симпатии:
    120
    Есть например текст.
    Нужно с помощью регулярки вырезать все что идет после последнего слеша (выделено, тоесть 111.rar), при этом строка может меняться как угодно.
     
  2. casher

    casher

    Регистр.:
    24 фев 2008
    Сообщения:
    168
    Симпатии:
    17
    HTML:
    http:(.+)\/(.+)
    работает если жадность метасимволов не убирать
     
  3. Jed7777

    Jed7777 Постоялец

    Регистр.:
    17 июл 2008
    Сообщения:
    136
    Симпатии:
    120
    Не работает никак.
     
  4. casher

    casher

    Регистр.:
    24 фев 2008
    Сообщения:
    168
    Симпатии:
    17
    перед обратным слешем прямой слэш нужно поставить, тэг PHP почемуто глотает его ...
    погляди в конструкторе
    HTML:
    http://www.pcre.ru/eval/http%3A(.%2B)%5C%262f%3B(.%2B)%40%3D%23%3D%40101%40%3D%23%3D%40http%3A%262f%3B%262f%3Bfire189.sute.com%262f%3B676th-127063...49397%262f%3B56889-6%262f%3B111.rar/
     
  5. Jed7777

    Jed7777 Постоялец

    Регистр.:
    17 июл 2008
    Сообщения:
    136
    Симпатии:
    120
    Теперь он туже строку и выдал, нужно что после последнего слеша
     
  6. casher

    casher

    Регистр.:
    24 фев 2008
    Сообщения:
    168
    Симпатии:
    17
    во второй подстроке "(.+)" будет результат.
    кинь кусок кода, который обрабатывает строку, поправим.
     
  7. legendar

    legendar Писатель

    Регистр.:
    9 дек 2008
    Сообщения:
    9
    Симпатии:
    1
    PHP:
     $result preg_replace('/^.*?\/([^\/]+)$/is''$1'$url);
     
  8. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    "/([^/]+)\.rar$/is"
     
  9. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    737
    Симпатии:
    263
    В php есть две замечательные функции - dirname() и basename().

    PHP:
    $str "http://fire189.sute.com/676th-12706349397/56889-6/111.rar";
    echo 
    basename($str);
    echo 
    dirname($str);

    // второй способ - разбить все по / в массив и вывести без последнего
    $arr explode('/',$str);
    array_pop($arr);
    echo 
    join('/',$arr);  

    // и регуляркой - удалить не-слеши до конца строки
    echo preg_replace('@/[^/]+$@','',$str);
     
    Jed7777 нравится это.
  10. FlashBlack

    FlashBlack Постоялец

    Регистр.:
    19 сен 2006
    Сообщения:
    77
    Симпатии:
    45
    а зачем для этого регулярка??
    Код:
    $line = 'http://fire189.sute.com/676th-12706349397/56889-6/111.rar';
    $line = end(explode('/', $line));
    echo $line;
    не больше, не меньше
     
Статус темы:
Закрыта.