ФорумПрограммированиеPHP для идиотов → как отрезать от строки ее часть

как отрезать от строки ее часть

  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 29 июля 2010 г. 12:30

    для того чтобы из полного урла получить урл, начинающийся от корня фреймворка я делаю так


    $offset = substr(trim($_SERVER['SCRIPT_NAME'], '/'), 0, -9);

    $uri = ltrim(trim($_SERVER['REQUEST_URI'], '/'), $offset);


    поюясню,
    полный урл - /ololo/lala/bebe/sait/framework/controller/action
    урл от корня - controller/action

    такой урл нужен для внутриннего применения классом реквест

    проблема в том, что отрезая оффсет через ltrim он отрезает лишние буквы, в зависимости от урла

    если отрезать через str_replace - он вырежет все совпадения, а не только оффсет из начала строки

    substr не катит, тк оффсет может быть разной длины

    как же трушно отрезать оффсет?

    или предложите другой трушеый вариант получения отночительного урл
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 29 июля 2010 г. 12:54, спустя 24 минуты 12 секунд

    если отрезать через str_replace - он вырежет все совпадения, а не только оффсет из начала строки


    function str_replace_once($needle , $replace , $haystack){
    // Looks for the first occurence of $needle in $haystack
    // and replaces it with $replace.
    $pos = strpos($haystack, $needle);
    if ($pos === false) {
    // Nothing found
    return $haystack;
    }
    return substr_replace($haystack, $replace, $pos, strlen($needle));
    }

    ?
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 29 июля 2010 г. 13:02, спустя 7 минут 50 секунд

  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 29 июля 2010 г. 13:06, спустя 3 минуты 51 секунду

    фигасе, даже я не помню
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 29 июля 2010 г. 22:15, спустя 9 часов 9 минут 38 секунд

    soulgarden, а он специально сидел , ждал и помнил)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!