Проверить, есть ли в URL определенная строка с PHP

111

Я хотел бы знать, присутствует ли какое-то слово в URL-адресе.

Например, если в URL-адресе есть слово «автомобиль», например www.domain.com/car/ или www.domain.com/car/audi/, оно будет эхом «машина существует», а если ничего нет, оно будет эхом «нет машин». .

писое
источник
Это также зависит от того, ищете ли вы просто слово «автомобиль» или вам также нужен тип автомобиля или автомобилей. Вам могут понадобиться preg_match, strpos, explode и in_array / array_search, действительно просто зависит. если вам нужно что-то простое, просто используйте strpos, как предложено
Мэтт
Вы можете найти s($_SERVER['REQUEST_URI'])->contains('car')полезные сведения, найденные в этой автономной библиотеке .
caw
Что, если URL-адрес содержит слово «испугался»? Должен ли этот отпечаток «машина существует»? Если нет, то большинство ответов здесь неверны.
doug65536

Ответы:

227

Попробуйте что-нибудь подобное. Первая строка формирует ваш URL, а остальные проверяют, содержит ли он слово «автомобиль».

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


if (strpos($url,'car') !== false) {
    echo 'Car exists.';
} else {
    echo 'No cars.';
}
Digi
источник
Идеально подходит для моего проекта! Спасибо!
WebDevKev
Это то, что я искал. Отлично, спасибо.
JunaidFarooqui
1
Это хорошее решение, но будьте осторожны, так как он будет соответствовать URL-адресу, в котором есть машина. Например, www.domain.com/car-pricingили www.domain.com/carparksбудет проверять и выводить Car exists. Может быть, в вашем случае это не имеет значения, но для других это может быть актуально!
Javacadabra
Собственно ищу Великого!
Виньеш Кришнамурти,
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));дает мне 1независимо от того, categoryсуществует ли в URL-адресе или нет. Есть идеи, почему?
Si8
66

Думаю, самый простой способ:

if (strpos($_SERVER['REQUEST_URI'], "car") !== false){
// car found
}
Санти Нуньес
источник
Отлично ... Мне нужно сопоставить example.com/events/pagename, чтобы найти любые URL-адреса с «событиями» в них, и это работает!
Tingo
Я использовал это несколько раз на прошлой неделе в 4 разных проектах. Просто. Спасибо.
Pegues 02
Это не проверяет полный URL-адрес; только путь. Он не будет проверять схему, домен, порт, параметры запроса или фрагмент.
kloddant 02
13
if( strpos( $url, $word ) !== false ) {
    // Do something
}
никто
источник
4

strstr тогда не существовало?

if(strstr($_SERVER['REQUEST_URI'], "car")) {
   echo "car found";
}

Это должен быть один из самых простых способов, верно?

Матис Сегерс
источник
3

Взгляните на функцию strpos :

if(false !== strpos($url,'car')) {
    echo 'Car exists!';
}
else {
    echo 'No cars.';
}
Джефф
источник
1
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


if (!strpos($url,'car')) {
    echo 'Car exists.';
} else {
    echo 'No cars.';
}

Кажется, это работает.

Ричард Эндрю Ли
источник
Неправильный путь здесь.
Kobus Myburgh 08
1

Конечно, это правильный путь ...

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


if (!strpos($url,'mysql')) {
echo 'No mysql.'; //swapped with other echo statement
} else {
echo 'Mysql exists.';
}

В противном случае он сообщает обратное ...

Mikeys4u
источник
1

Это сработало для меня:

// Check if URL contains the word "car" or "CAR"
   if (stripos($_SERVER['REQUEST_URI'], 'car' )!==false){
   echo "Car here";
   } else {
   echo "No car here";
   }
Если вы хотите использовать HTML в эхо, обязательно используйте '' вместо "".
Я использую этот код для отображения предупреждения на моей веб-странице https://geaskb.nl/ 
где URL содержит слово "Омник" 
но скрыть предупреждение на страницах, не содержащих слово «Омник» в URL.
Марс
источник
0

Параметры URL и полученные от глобальной переменной, $_GETкоторая называется массивом. Итак, чтобы узнать, содержит ли URL-адрес параметр, вы можете использовать isset()функцию.

if (isset($_GET['yourparametername'])) {
//The parameter you need is present
}

После этого вы можете создать отдельный массив такого параметра, который нужно прикрепить к URL-адресу.

Например:

if(isset($_GET['param1'])) {
\\The parameter you need is present
$attachList['param1'] = $_GET['param1'];
}

if(isset($_GET['param2'])) {
$attachList['param2'] = $_GET['param2];
}

Теперь, чтобы узнать, нужен ли вам ?символ, просто посчитайте этот массив

if(count($attachList)) {
    $link .= "?";
    // and so on
}

Обновить:

Чтобы узнать, установлен ли какой-либо параметр, просто посчитайте $ _GET

if(count($_GET)) {
     //some parameters are set
}
user3131771
источник
0
if ( stristr( SITE_HOST, 'your site' ) ) {
    $protocol = ( !empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) ? 'https://' : 'http://';
    $request = ( !empty( $_SERVER['HTTP_X_ORIGINAL_REQUEST'] ) ) ? $_SERVER['HTTP_X_ORIGINAL_REQUEST'] : $_SERVER['REQUEST_URI'];
    echo $protocol .'your site'. $request;
}
Derald Collado
источник
0

вы можете использовать эту функцию как этот код, сэр

 if((strpos($_SERVER['REQUEST_URI'],'car') !== false))
        echo'<h3 class=" edit-top">Car Exist</h3>';
    else
        echo'<h3 class=" edit-top">Not</h3>';
Адель Абу Элезз
источник
-1
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if ( strpbrk($url, 'test') ) {
    // Do something...
}
else {
    // Do another thing
}

(> PHP 5)

Дмитрий Г
источник
Это действительно отвечает на вопрос, но есть более эффективные методы для этого ... Эта функция возвращает строку, начинающуюся с найденного символа ... strpbrk()документацию можно найти здесь
jagb