PHP
Comment décomposer une URL
Recherche…
Introduction
Lorsque vous codez PHP, vous vous retrouvez probablement dans une position où vous devez décomposer une URL en plusieurs parties. Il y a évidemment plus d'une façon de le faire en fonction de vos besoins. Cet article vous expliquera ces moyens afin que vous puissiez trouver ce qui vous convient le mieux.
Utiliser parse_url ()
parse_url (): Cette fonction analyse une URL et renvoie un tableau associatif contenant l'un des divers composants de l'URL présents.
$url = parse_url('http://example.com/project/controller/action/param1/param2');
Array
(
[scheme] => http
[host] => example.com
[path] => /project/controller/action/param1/param2
)
Si vous avez besoin du chemin séparé, vous pouvez utiliser exploser
$url = parse_url('http://example.com/project/controller/action/param1/param2');
$url['sections'] = explode('/', $url['path']);
Array
(
[scheme] => http
[host] => example.com
[path] => /project/controller/action/param1/param2
[sections] => Array
(
[0] =>
[1] => project
[2] => controller
[3] => action
[4] => param1
[5] => param2
)
)
Si vous avez besoin de la dernière partie de la section, vous pouvez utiliser fin () comme ceci:
$last = end($url['sections']);
Si l'URL contient des variables GET, vous pouvez également les récupérer
$url = parse_url('http://example.com?var1=value1&var2=value2');
Array
(
[scheme] => http
[host] => example.com
[query] => var1=value1&var2=value2
)
Si vous souhaitez décomposer les variables de requête, vous pouvez utiliser parse_str () comme ceci:
$url = parse_url('http://example.com?var1=value1&var2=value2');
parse_str($url['query'], $parts);
Array
(
[var1] => value1
[var2] => value2
)
Utiliser explode ()
explode (): Retourne un tableau de chaînes, chacune étant une sous-chaîne de chaîne formée en la divisant sur des limites formées par le délimiteur de chaîne.
Cette fonction est assez simple.
$url = "http://example.com/project/controller/action/param1/param2";
$parts = explode('/', $url);
Array
(
[0] => http:
[1] =>
[2] => example.com
[3] => project
[4] => controller
[5] => action
[6] => param1
[7] => param2
)
Pour ce faire, vous pouvez récupérer la dernière partie de l'URL:
$last = end($parts);
// Output: param2
Vous pouvez également naviguer à l'intérieur du tableau en utilisant sizeof () en combinaison avec un opérateur mathématique comme celui-ci:
echo $parts[sizeof($parts)-2];
// Output: param1
Utiliser basename ()
basename (): Étant donné une chaîne contenant le chemin d'accès à un fichier ou à un répertoire, cette fonction renvoie le composant nom de fin.
Cette fonction ne renverra que la dernière partie d'une URL
$url = "http://example.com/project/controller/action/param1/param2";
$parts = basename($url);
// Output: param2
Si votre URL contient plus de choses et que vous avez besoin du nom de répertoire contenant le fichier, vous pouvez l’utiliser avec dirname () comme ceci:
$url = "http://example.com/project/controller/action/param1/param2/index.php";
$parts = basename(dirname($url));
// Output: param2