Parser les sous-répertoires d'une url

Contenu du snippet

La fonction parse_url() ne parse pas les sous-répertoires d'une url (peut-être y a-t-il une fonction dédiée à cet effet ?), alors cette fonction sert à retrouver tous les sous-répertoires présent dans une url de type http://www.site.php/doss1/doss2/page.php?cavamenant=hein de les placer dans un tableau (içi on aura une valeur = doss1 et une valeur = doss2, pour les autres types d'url, je n'ai pas essayé.

Source / Exemple :


function dossier($url)
{ 
  $lien_seg = parse_url("$url");
  $do=dirname($lien_seg['path']);
  preg_match_all('@[/]+[0-9_A-Za-z]{1,255}@', $do, $doss);
  $n_ligne=count($doss[0]);
  for ($i=0;$i<$n_ligne;$i++)
  {
	 $doss[0][$i]=ereg_replace("[/]",'', $doss[0][$i]);
  };
  return $doss[0];
}

Conclusion :


function dossier($url)
{
//** sur une url de type http://www.site.com/doss1/doss2/page.php

$lien_seg = parse_url("$url");
//** parse l'url

$do=dirname($lien_seg['path']);
//** Je ne prends que $lien_seg['path'] : /doss1/doss2/page.php
//** puis avec dirname, je ne garde que /doss1/doss2
//** ATTENTION : $do est un array()
//** la chaine de caractère est dans $do[0]
//** on a : $do[0][0]='/doss1/doss2'

preg_match_all('@[/]+[0-9_A-Za-z]{1,255}@', $do, $doss);
//** Je met tout ce qui est après le caractère "/" du tableau $doss
//** dans le tableau $do (je laisse passer les caractères pouvant
//** constituer un nom de dossier jusqu'a concurrence de 255 caractères)
//** on a maintenant $doss[0][0]='/doss1' et $doss[0][1]='/doss2'

$n_ligne=count($doss[0]);
//** je compte le nombre de ligne du tableau $doss[o] pour la suite

for ($i=0;$i<$n_ligne;$i++)
{
$doss[0][$i]=ereg_replace("[/]",'', $doss[0][$i]);
//** je remplace les caractères "/" par rien, bref je les enlève
//** je n'arrive pas à me servir de la fonction array_walk qui me
//** semblait approprièe
};

return $doss[0];
//** il suffira d'utiliser cette fonction comme çà :
//** $nom_de_dossiers = dossier($url); et dans le tableau
//** $nom_de_dossiers, vous avez tous les sous répertoires
//** de l'url.
//** un print_r ($nom_de_dossiers) affichera tout dans
//** un premier temps
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.