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
Freigeben: 2024-12-04 18:14:12
Original
196 Leute haben es durchsucht

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
Nach dem Login kopieren

Um die Abfragezeichenfolge zu entfernen und eine saubere URL zu erhalten wie:

www.example.com/myurl.html
Nach dem Login kopieren

Sie können die vielseitige Strtok-Funktion nutzen.

$url = strtok($_SERVER["REQUEST_URI"], '?');
Nach dem Login kopieren

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";
}
Nach dem Login kopieren

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
)
---
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage