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”. .

pisoe
źródło
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
Może okazać się s($_SERVER['REQUEST_URI'])->contains('car')pomocny, co znajdziesz w tej samodzielnej bibliotece .
krakaj
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.';
}
digi
źródło
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
}
Santi Nunez
źródło
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ę

J0HN
źródło
13
if( strpos( $url, $word ) !== false ) {
    // Do something
}
nikt
źródło
12

pracował dla mnie z php

if(strpos($_SERVER['REQUEST_URI'], 'shop.php') !== false){
echo 'url contains shop';
}
Shuhad zaman
źródło
1
Jest to zasadniczo identyczne z trzema twoimi poprzednimi odpowiedziami . Po co zawracać sobie głowę publikowaniem takiej odpowiedzi?
Mark Rotteveel
4

strstr wtedy nie istniał?

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

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

Mathijs Segers
źródło
3

Spójrz na funkcję strpos :

if(false !== strpos($url,'car')) {
    echo 'Car exists!';
}
else {
    echo 'No cars.';
}
Jeff
źródło
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ć.

Richarda Andrew Lee
źródło
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 ...

Mikeys4u
źródło
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.
Mars
źródło
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
}
user3131771
źródło
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
źródło
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>';
Adel Abou Elezz
źródło
-1
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if ( strpbrk($url, 'test') ) {
    // Do something...
}
else {
    // Do another thing
}

(> PHP 5)

Dmitry G.
źródło
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