помогите выбрать все url с вхождением переменной

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

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

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
    Добрый день,
    есть ряд url в которое входит слово "blog" как их определить?
    пробовал так, но чтото не то
    PHP:
    <?
    $url =$_SERVER["SCRIPT_NAME"];
    $url_1=str_replace("blog","",$url);
    if (
    $url!=url_1) {
    echo 
    "true";
    }
    ?>
    cпасибо.
     
  2. zss

    zss Постоялец

    Регистр.:
    22 июн 2007
    Сообщения:
    55
    Симпатии:
    6
    Странно, вроде должно работать.
    Еще можно попробовать
    Код:
    // начиная с версии 5.0.0 доступен аргумент count
    $url_1 = str_replace("blog", "", $url, $count);
    if( $count!=0)
        echo "true";
    
    или
    Код:
    $pos = strpos($url, "blog");
    // Заметьте, что используется ===.  Использование == не даст верного 
    if ($pos === false)
        echo "Строка 'blog' не найдена";
    
    
     
    fafee нравится это.
  3. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Если это точный листинг скрипта то ошибка в условии
    if ($url!=url_1)
    должно быть
    if ($url!= $url_1)
    И вообще проверку на наличие лучше делать через
    substr_count или просто strpos
     
  4. fafee

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
     
  5. BlackHawk74

    BlackHawk74 Создатель

    Регистр.:
    8 май 2010
    Сообщения:
    13
    Симпатии:
    2
    PHP:
    if(preg_match('/blog/i',$_SERVER['SCRIPT_NAME'])) echo 'true';
    не?
     
  6. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    еще можно при помощи explode разделить на части строчку, и проверить длину второго элемента массива. Но это так, извращение немного, но работать будет :)

    Вообще лучше бы видеть как выглядит ваша ссылка
     
  7. fafee

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
    остановился на варианте
    $pos = strpos($_SERVER["SCRIPT_NAME"], "blog");
    if($pos === false) {убираем элементы не входящие в блог}
    только мучает немного вопрос, если таких проверок несколько в пределах одной страницы, так как она по кускам собирается из хедера, футера и проч., насколько сильнее грузится проц. мелочи?..
     
  8. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    if (!strstr($_SERVER["SCRIPT_NAME"], 'blog')) работает быстрее, чем strpos (как ни странно). Можешь сам запустить цикл на 100 тыс. раз и замерить время в том и другом случае.
    Но в твоей конкретной ситуации считай, что такая проверка ничего не весит и ничего не занимает. Так что смысла возиться и устанавливать где-то флаг, а потом во всех темплейтах проверять этот флаг, а не непосредственно еще раз искать строку - я не вижу. Экономия на спичках.
     
    fafee нравится это.
Статус темы:
Закрыта.