Maison > développement back-end > tutoriel php > Comment puis-je supprimer efficacement les chaînes de requête des URL en PHP ?

Comment puis-je supprimer efficacement les chaînes de requête des URL en PHP ?

DDD
Libérer: 2024-12-04 18:14:12
original
184 Les gens l'ont consulté

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

Obtention de l'URL sans la chaîne de requête

Lors de la construction d'URL pour la page actuelle à l'aide de PHP, vous pouvez rencontrer des cas où l'URL demandée inclut un chaîne de requête, telle que :

www.example.com/myurl.html?unwantedthngs
Copier après la connexion

Pour supprimer la chaîne de requête et obtenir une URL propre comme :

www.example.com/myurl.html
Copier après la connexion

vous pouvez tirer parti de la fonction polyvalente strtok.

$url = strtok($_SERVER["REQUEST_URI"], '?');
Copier après la connexion

strtok() fournit une méthode simple pour extraire la partie de l'URL avant la première occurrence du ? personnage. Contrairement à éclater(), qui nécessite de créer un tableau avec un maximum de deux éléments puis d'extraire le premier élément, strtok() est une approche plus directe.

Utiliser d'autres méthodes, telles que strstr() ou substr() peut entraîner un comportement erratique, en particulier lorsque la chaîne de requête est absente ou contient plusieurs paramètres de requête. Pour illustrer l'efficacité de strtok(), considérons la démonstration suivante :

$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";
}
Copier après la connexion

Sortie :

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
)
---
Copier après la connexion

Comme le montre la sortie, strtok renvoie systématiquement l'URL souhaitée sans la chaîne de requête, que la chaîne de requête soit présente ou vide. En utilisant strtok(), vous pouvez extraire de manière efficace et fiable l'URL propre de toute requête donnée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal