За последние 24 часа нас посетил 74271 программист и 10165 роботов. Сейчас ищут 2750 программистов ...

Нужно убрать все левые и правые слеши из строки

Тема в разделе "Регулярные выражения", создана пользователем Ігор, 3 фев 2009.

  1. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Не пойму. Для реврайта регулярки писал, но для пхп не получается.
    нужно из строки убрать все левые и правые слеши
    //adas/da/dd/aaa////// ====> adas/da/dd/aaa

    preg_replace("(^\/*)(\w+)(\/*)$", "$2", $this->fullpath)

    Получаем ошибку
    Warning: preg_replace() [function.preg-replace]: Unknown modifier '(' in
     
  2. akrinel

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

    С нами с:
    26 янв 2009
    Сообщения:
    954
    Симпатии:
    1
    Адрес:
    Spb
    А зачем тут вообще регулярки?

    PHP:
    1.  
    2.     <?php
    3.         $a  =  "//adas/d\\a/dd/aa\\a////// ====> adas/da/dd/aaa ";
    4.         echo  $a.'<br />';
    5.        
    6.         $a = str_replace(array('/', '\\'), '', $a);
    7.         echo  $a;
    8.     ?>
    9.  
    Думаю работать будет быстрее чем регулярка.
     
  3. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Я так понял нужно убрать крайние / слева и справа
    PHP:
    1. <?php
    2. $a  =  "//adas/da/dd/aaa//////";
    3. $a  =  trim($a, '/');
    4. echo $a;
    5. ?>
     
  4. akrinel

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

    С нами с:
    26 янв 2009
    Сообщения:
    954
    Симпатии:
    1
    Адрес:
    Spb
    unicross, так написано же

     
  5. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    adas/da/dd/aaa это я так понимаю нужный результат :)
     
  6. Вы оба не правы )))
     
  7. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
     
  8. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.783
    Симпатии:
    0
    ты путаешь с прямыми и обратными слешами
     
  9. akrinel

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

    С нами с:
    26 янв 2009
    Сообщения:
    954
    Симпатии:
    1
    Адрес:
    Spb
    Sergey89, я не путаю просто 50% моих знакомых вместо терминов "прямой" и "обратный" используют "левый" и "правый".
     
  10. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    unicross
    Спасибо. Это то что мне нужно.
    Как раз нужно было убрать крайние слеши. Может не так выразился.
    Наверное мне какая-то доккументация не та попадает. Сначала и думал trim использовать, но в Котерове нашел, что она работает с пробелами и переносом строки :(
    А так, для интересса, где у меня в регулярке ошибка?
     
  11. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.783
    Симпатии:
    0
    1) не указаны ограничители
    2) в \w+ не входит /
     
  12. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Решение без трима ))

    Код (Text):
    1. <?php
    2.  
    3. ini_set('display_errors',1);
    4. error_reporting(E_ALL);
    5.  
    6.  
    7. $text='//adas/da/dd/aaa//////';
    8.  
    9. $poisk='/[a-z].+[a-z]/si';
    10.  
    11. preg_match_all($poisk,$text,$new);
    12.  
    13. echo $new[0][0];
    14.  
    15.  
    16.   ?>