Перевірте, чи URL-адреса має певну рядок із PHP


111

Я хотів би знати, чи є якесь слово в URL-адресі.

Наприклад, якщо слово car є в 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')корисні, як це знайдено в цій самостійній бібліотеці .
каре

Що робити, якщо URL містить слово "наляканий"? Чи повинен цей друк "автомобіль існує"? Якщо ні, то більшість відповідей тут неправильні.
doug65536

Відповіді:


227

Спробуйте щось подібне. Перший рядок будує вашу URL-адресу, а решту перевіряє, чи містить слово "автомобіль".

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


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

Ідеально підходить для мого проекту! Дякую!
WebDevKev

Ось що я шукав. Ідеально, спасибі
JunaidFarooqui

1
Це хороше рішення, але будьте обережні, що це збігатиметься з URL-адресою, де автомобіль є де завгодно. Наприклад, www.domain.com/car-pricingабо www.domain.com/carparksбуде підтверджено та виведено Car exists. Можливо, це не має значення у вашому випадку, але для інших це може бути актуально!
Джавакадабра

Саме я шукаю Великого!
Віньєш Крішнаморті

$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-адреси з "подіями" в них, і це працює!
Тінго

Я використовував це кілька разів за минулий тиждень у 4 різних проектах. Простий. Дякую.
Pegues

Це не перевіряє повну URL-адресу; тільки стежка. Він не перевірятиме схему, домен, порт, параметри запиту чи фрагмент.
kloddant




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,'mysql')) {
echo 'No mysql.'; //swapped with other echo statement
} else {
echo 'Mysql exists.';
}

В іншому випадку його звітність буде навпаки ...


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 містить слово "Omnik" 
але приховайте попередження на сторінках, які не містять у URL-адресі слово "Omnik".

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
}

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;
}

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.