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
Pour supprimer la chaîne de requête et obtenir une URL propre comme :
www.example.com/myurl.html
vous pouvez tirer parti de la fonction polyvalente strtok.
$url = strtok($_SERVER["REQUEST_URI"], '?');
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"; }
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 ) ---
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!