Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Abfragezeichenfolgen effizient aus URLs in PHP entfernen?

Wie kann ich Abfragezeichenfolgen effizient aus URLs in PHP entfernen?

DDD
DDDOriginal
2024-12-04 18:14:12190Durchsuche

How Can I Efficiently Remove Query Strings from URLs in PHP?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn