За последние 24 часа нас посетили 16756 программистов и 1641 робот. Сейчас ищут 845 программистов ...

Как удалить часть строки в переменной

Тема в разделе "PHP для новичков", создана пользователем mainet, 4 апр 2014.

  1. mainet

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

    С нами с:
    31 май 2012
    Сообщения:
    77
    Симпатии:
    0
    Есть переменная
    Код (Text):
    1. $link
    которые содержи url типа:
    Код (Text):
    1.  
    2. domain.ru/cat.html?start=1
    3. domain.ru/cat.html?start=2
    4. domain.ru/cat.html?start=3
    5. ......
    6. и т. д.
    Как удалить часть строки в переменной начиная с ?start и до конца строки.
    Чтобы в итоге получилось:
    domain.ru/cat.html

    Я примерно понимаю что логика такая:
    Надо найти есть ли в переменой $link знак ? (или ?start)и удалить все что послее нее, а результат опять записать в $link
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    поможет substring

    Добавлено спустя 5 минут 9 секунд:
    или при помощи explode разбить строку в массив, и превое значение в массиве будет ваша ссылка
     
  3. mainet

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

    С нами с:
    31 май 2012
    Сообщения:
    77
    Симпатии:
    0
    Удаляю так:
    Код (Text):
    1.  
    2. $my_count_string = strpos($link, "?");
    3. if ($my_count_string > 1) {
    4.     $link = substr($link, 0, $my_count_string);
    5. }
    Может есть более правильное решение ?
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    насчет substr не уверен. есть ли оналог функции indexOf(java)
    вот нашел лучший вариант
    Код (Text):
    1.  
    2. <?php
    3. $url = "domain.ru/cat.html?start=1";
    4. $url = strstr($url, '?', true); // Начиная с PHP 5.3.0
    5. echo $url;
    6. //Возвращает domain.ru/cat.html
     
  5. mainet

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

    С нами с:
    31 май 2012
    Сообщения:
    77
    Симпатии:
    0
    Когда нету знака ? удаляет все под корень домена - domain.ru/

    С проверкой работает.
    Код (Text):
    1.  
    2. $my_count_string = strpos($link, "?");
    3. if ($my_count_string > 1) {
    4.    $link = substr($link, 0, $my_count_string);
    5. }
     
  6. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    ну оптимизация конечно нужна)