Sprawdź, czy URL ma określony ciąg znaków z PHP


111

Chciałbym wiedzieć, czy w adresie URL występuje jakieś słowo.

Na przykład, jeśli w adresie URL znajduje się słowo samochód, np. Www.domena.com/samochód lub www.domena.com/samochód/audi/, będzie to echo „samochód istnieje”, a jeśli nie ma nic, będzie to oznaczało „brak samochodów”. .



Zależy to również od tego, czy szukasz tylko słowa samochód, czy też chcesz również określić typ samochodu lub samochodów. Możesz potrzebować preg_match, strpos, explode i in_array / array_search, naprawdę zależy. jeśli chcesz czegoś prostego, po prostu użyj strpos zgodnie z sugestią
Matt


A jeśli adres URL zawiera słowo „przestraszony”? Czy napis „samochód istnieje”? Jeśli nie, większość odpowiedzi jest błędnych.
doug65536,

Odpowiedzi:


227

Spróbuj czegoś takiego. Pierwszy wiersz tworzy adres URL, a pozostałe sprawdzają, czy zawiera słowo „samochód”.

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


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

Idealny do mojego projektu! Dzięki!
WebDevKev,

Właśnie tego szukałem. Perfekcyjnie, dzięki.
JunaidFarooqui

1
To dobre rozwiązanie, ale uważaj, że będzie pasować do adresu URL, który zawiera samochód w dowolnym miejscu. Na przykład www.domain.com/car-pricinglub www.domain.com/carparkszweryfikuje i wyprowadzi Car exists. Może to nie ma znaczenia w twoim przypadku, ale dla innych może mieć znaczenie!
Javacadabra

Dokładnie szukam Świetnie!
Vignesh Krishnamoorthy

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));daje mi 1niezależnie od tego, czy categoryistnieją w adresie URL, czy nie. Każdy pomysł, dlaczego?
Si8

66

Myślę, że najłatwiej jest:

if (strpos($_SERVER['REQUEST_URI'], "car") !== false){
// car found
}

Idealnie ... Musiałem dopasować example.com/events/pagename, aby znaleźć adresy URL zawierające „wydarzenia” i to działa!
Tingo

Użyłem tego kilka razy w zeszłym tygodniu w 4 różnych projektach. Prosty. Dzięki.
Pegues

To nie sprawdza pełnego adresu URL; tylko ścieżka. Nie będzie testować schematu, domeny, portu, parametrów zapytania lub fragmentu.
kloddant

22
$url = " www.domain.com/car/audi/";
if (strpos($url, "car")!==false){
    echo "Car here";
}
else {
   echo "No car here :(";
}

Zobacz strposinstrukcję


13
if( strpos( $url, $word ) !== false ) {
    // Do something
}


4

strstr wtedy nie istniał?

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

To musi być jedna z najłatwiejszych metod, prawda?


3

Spójrz na funkcję 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.';
}

To wydaje się działać.


Nie tak tutaj.
Kobus Myburgh

1

Z pewnością jest to właściwy sposób ...

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


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

W przeciwnym razie zgłasza w odwrotny sposób powinien ...


1

To zadziałało dla mnie:

// Check if URL contains the word "car" or "CAR"
   if (stripos($_SERVER['REQUEST_URI'], 'car' )!==false){
   echo "Car here";
   } else {
   echo "No car here";
   }
Jeśli chcesz użyć HTML w echu, pamiętaj, aby użyć „” zamiast „”.
Używam tego kodu, aby wyświetlić alert na mojej stronie internetowej https://geaskb.nl/ 
gdzie adres URL zawiera słowo „Omnik” 
ale ukryj alert na stronach, które nie zawierają słowa „Omnik” w adresie URL.

0

Parametry adresu URL i otrzymane ze zmiennej globalnej o nazwie, $_GETktóra w rzeczywistości jest tablicą. Aby więc wiedzieć, czy adres URL zawiera parametr, możesz użyć isset()funkcji.

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

Następnie możesz stworzyć oddzielną tablicę takich parametrów, które musisz dołączyć do adresu URL.

Na przykład:

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

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

Teraz, aby wiedzieć, czy potrzebujesz ?symbolu, po prostu policz tę tablicę

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

Aktualizacja:

Aby wiedzieć, czy jakikolwiek parametr jest ustawiony, po prostu policz $ _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

Możesz użyć tej funkcji jako tego kodu

 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)


To odpowiada na pytanie, ale są lepsze metody, aby to zrobić ... Ta funkcja zwraca ciąg zaczynający się od znalezionego znaku ... strpbrk()dokumentację można znaleźć tutaj
jagb
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.