Überprüfen Sie, ob die URL eine bestimmte Zeichenfolge mit PHP hat


111

Ich würde gerne wissen, ob ein Wort in der URL vorhanden ist.

Wenn sich beispielsweise das Wort "Auto" in der URL befindet, z. B. "www.domain.com/car/" oder "www.domain.com/car/audi/", wird "Auto ist vorhanden" und wenn nichts vorhanden ist, wird "Kein Auto" angezeigt. .



Dies hängt auch davon ab, ob Sie nur nach dem Wort Auto suchen oder ob Sie auch die Art des Autos oder der Autos möchten. Möglicherweise benötigen Sie preg_match, strpos, explode und in_array / array_search, das hängt wirklich nur davon ab. Wenn Sie etwas Einfaches wollen, verwenden Sie einfach Strpos wie vorgeschlagen
Matt

Möglicherweise finden Sie s($_SERVER['REQUEST_URI'])->contains('car')hilfreiche Informationen in dieser eigenständigen Bibliothek .
Caw

Was ist, wenn die URL das Wort "Angst" enthält? Sollte dieser Druck "Auto ist vorhanden"? Wenn nicht, sind die meisten Antworten hier falsch.
Doug65536

Antworten:


227

Versuchen Sie so etwas. Die erste Zeile erstellt Ihre URL und der Rest prüft, ob sie das Wort "Auto" enthält.

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


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

Perfekt für mein Projekt! Vielen Dank!
WebDevKev

Das habe ich gesucht. Perfekt danke.
JunaidFarooqui

1
Dies ist eine gute Lösung, aber seien Sie vorsichtig, dass dies mit einer URL übereinstimmt, die überall ein Auto hat. Zum Beispiel www.domain.com/car-pricingoder www.domain.com/carparkswird validiert und ausgegeben Car exists. Vielleicht spielt es in Ihrem Fall keine Rolle, aber für andere könnte es relevant sein!
Javacadabra

Genau ich suche Great!
Vignesh Krishnamoorthy

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));gibt mir 1egal ob categoryin der url existiert oder nicht. Irgendeine Idee warum?
Si8

66

Ich denke, der einfachste Weg ist:

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

Perfekt ... Ich musste example.com/events/pagename abgleichen, um URLs mit "Ereignissen" zu finden, und es funktioniert!
Tingo

Ich habe dies in der letzten Woche mehrmals für 4 verschiedene Projekte verwendet. Einfach. Vielen Dank.
Pegues

Dies testet nicht die vollständige URL. nur der Weg. Es wird nicht anhand des Schemas, der Domäne, des Ports, der Abfrageparameter oder des Fragments getestet.
Kloddant

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

Siehe strposHandbuch


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


4

strstr gab es damals noch nicht?

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

Dies muss eine der einfachsten Methoden sein, oder?


3

Schauen Sie sich die Strpos- Funktion an:

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

Das scheint zu funktionieren.


Falscher Weg hierher.
Kobus Myburgh

1

Sicher ist das der richtige Weg ....

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


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

Andernfalls wird es umgekehrt gemeldet ...


1

Das hat bei mir funktioniert:

// Check if URL contains the word "car" or "CAR"
   if (stripos($_SERVER['REQUEST_URI'], 'car' )!==false){
   echo "Car here";
   } else {
   echo "No car here";
   }
Wenn Sie HTML im Echo verwenden möchten, müssen Sie '' anstelle von "" verwenden.
Ich verwende diesen Code, um eine Warnung auf meiner Webseite https://geaskb.nl/ anzuzeigen. 
wo die URL das Wort "Omnik" enthält 
Verstecken Sie die Warnung jedoch auf Seiten, die nicht das Wort "Omnik" in der URL enthalten.

0

Die URL-Parameter und empfangen von einer globalen Variablen namens, $_GETdie tatsächlich ein Array ist. Um zu wissen, ob eine URL einen Parameter enthält, können Sie die isset()Funktion verwenden.

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

Anschließend können Sie ein separates Array solcher Parameter erstellen, die Sie an eine URL anhängen müssen.

Beispielsweise:

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

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

Um zu wissen, ob Sie ein ?Symbol benötigen oder nicht, zählen Sie einfach dieses Array

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

Aktualisieren:

Um zu wissen, ob ein Parameter festgelegt ist, zählen Sie einfach $ _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

Sie können diese Funktion als diesen Code verwenden, Sir

 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)


Dies beantwortet die Frage, aber es gibt bessere Methoden, um dies zu tun ... Diese Funktion gibt eine Zeichenfolge zurück, die mit dem gefundenen Zeichen beginnt ... strpbrk()Dokumentation finden Sie hier
jagb
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.