Par Nicolas SUPRIN, jeudi 10 mai 2007 à 13:23 | PHP | #101 | rss
N'ayant pas trouvé de fonction permettant de construire une url complète en passant par un tableau, j'ai pris l'initiative la coder rapidemment. Elle se base sur la même structure renvoyée par parse_url().
Description
string build_url ( array $A_url );
Cette fonction retourne une URL, à partir d'un tableau associatif contenant tous les éléments qui la composera. Les URLs partielles sont également acceptées, la fonction build_url() fera de son mieux pour les analyser correctement.
Liste de paramètres
$A_url
- L'URL à analyser, tableau associatif, dont les éléments peuvent être (au moins un) :
- scheme - e.g. http
- host
- port
- user
- pass
- path
- query - après le marqueur de question ?
- fragment - après la hachure #
Valeurs de retour
string url
correctement construite.
Exemples
Exemple 1. Exemple avec parse_url()
<?php $A_url = parse_url('http://username:password@hostname:80/path?arg=value#anchor'); print_r($A_url); // modification du chemin de l'url $A_url['path'] = 'foo/bar.php'; echo (build_url($A_url)); ?>
L'exemple ci-dessus va afficher :
Array ( [scheme] => http [host] => hostname [port] => 80 [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor ) http://username:password@hostname:80/foo/bar.php?arg=value#anchor
Code source
function build_url($A_url) { $S_url = ''; // Sheme eg: http if (isset($A_url['scheme'])) { $S_url .= $A_url['scheme'].'://'; } // user:password if (isset($A_url['user'])) { $S_url .= $A_url['user']; if (isset($A_url['pass'])) { $S_url .= ':'.$A_url['pass']; } $S_url .= '@'; } // host if (isset($A_url['host'])) { $S_url .= $A_url['host']; } // port if (isset($A_url['port'])) { $S_url .= ':'.$A_url['port']; } // path (begins with / !!) if (isset($A_url['path'])) { if (0 !== strpos($A_url['path'], '/')) { $A_url['path'] = '/'.$A_url['path']; } $S_url .= $A_url['path']; } // query, after ? if (isset($A_url['query'])) { $S_url .= '?'.$A_url['query']; } // fragment, after # if (isset($A_url['fragment'])) { $S_url .= '#'.$A_url['fragment']; } return $S_url; }
Aucun commentaire pour le moment.
Aucun trackback.
Les trackbacks pour ce billet sont fermés.
Les commentaires pour ce billet sont fermés.