Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Abfragezeichenfolgen effizient aus URLs in PHP entfernen?
URL ohne Abfragezeichenfolge abrufen
Beim Erstellen von URLs für die aktuelle Seite mit PHP kann es vorkommen, dass die angeforderte URL eine enthält Abfragezeichenfolge, wie zum Beispiel:
www.example.com/myurl.html?unwantedthngs
Um die Abfragezeichenfolge zu entfernen und eine saubere URL zu erhalten wie:
www.example.com/myurl.html
Sie können die vielseitige Strtok-Funktion nutzen.
$url = strtok($_SERVER["REQUEST_URI"], '?');
strtok() bietet eine einfache Methode zum Extrahieren des Teils der URL vor dem ersten Vorkommen des ? Charakter. Im Gegensatz zu explosion(), bei dem ein Array mit maximal zwei Elementen erstellt und dann das erste Element extrahiert werden muss, ist strtok() ein direkterer Ansatz.
Mit anderen Methoden wie strstr() oder substr() kann zu fehlerhaftem Verhalten führen, insbesondere wenn der Abfragestring fehlt oder mehrere Abfrageparameter enthält. Um die Wirksamkeit von strtok() zu veranschaulichen, betrachten Sie die folgende Demonstration:
$urls = [ 'www.example.com/myurl.html?unwantedthngs#hastag', 'www.example.com/myurl.html' ]; foreach ($urls as $url) { var_export(['strtok: ', strtok($url, '?')]); echo "\n"; var_export(['strstr/true: ', strstr($url, '?', true)]); // unreliable echo "\n"; var_export(['explode/2: ', explode('?', $url, 2)[0]]); // limit stops after first encounter echo "\n"; var_export(['substr/strrpos: ', substr($url, 0, strrpos( $url, "?"))]); // unreliable echo "\n---\n"; }
Ausgabe:
array ( 0 => 'strtok: ', 1 => 'www.example.com/myurl.html', ) array ( 0 => 'strstr/true: ', 1 => 'www.example.com/myurl.html', ) array ( 0 => 'explode/2: ', 1 => 'www.example.com/myurl.html', ) array ( 0 => 'substr/strrpos: ', 1 => 'www.example.com/myurl.html', ) --- array ( 0 => 'strtok: ', 1 => 'www.example.com/myurl.html', ) array ( 0 => 'strstr/true: ', 1 => false, // unreliable ) array ( 0 => 'explode/2: ', 1 => 'www.example.com/myurl.html', ) array ( 0 => 'substr/strrpos: ', 1 => '', // unreliable ) ---
Wie in der Ausgabe zu sehen ist, gibt strtok konsistent die gewünschte URL ohne die Abfragezeichenfolge zurück. unabhängig davon, ob der Querystring vorhanden oder leer ist. Durch die Verwendung von strtok() können Sie die saubere URL effektiv und zuverlässig aus jeder Anfrage extrahieren.
Das obige ist der detaillierte Inhalt vonWie kann ich Abfragezeichenfolgen effizient aus URLs in PHP entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!