begin process at 2008 08 20 12:06:54
1 228 769 membres
141 nouveaux aujourd'hui
14 257 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PARSER LES SOUS-RÉPERTOIRES D'UNE URL


Information sur la source

Catégorie :Chaîne de caratère Classé sous : parser, url, sousrepertoires, dossier Niveau : Débutant Date de création : 11/12/2005 Date de mise à jour : 11/12/2005 23:10:04 Vu : 3 840

Note :
Aucune note

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

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

  • 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];
  • }
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
}
11 décembre 2005 23:10:04 :
.
  • signaler à un administrateur
    Commentaire de Anthomicro le 12/12/2005 15:45:54

    Salut,

    plutôt que d'utiliser des expressions régulières tu peux faire un explode avec le chemin retourné par parseurl, un explode de '/' et hop ;-)

    a +

  • signaler à un administrateur
    Commentaire de pichpoich le 12/12/2005 21:04:24

    Ah oui, exact, je ne connaissais pas.

    Merci.

  • signaler à un administrateur
    Commentaire de coucou747 le 14/12/2005 15:34:52

    les expressions régulières pour ça ???
    comme le dis antho, c'est inutile ici... elles sont trop lentes...

  • signaler à un administrateur
    Commentaire de Antidote le 19/12/2005 19:22:20

    je ne comprenais pas aussi, explode() forcément.

  • signaler à un administrateur
    Commentaire de syllebreton le 22/12/2005 15:04:17

    Bonjour

    Une autre fonction php existe, c'est la fonction recursive_readdir.
    Pour plus d'information reportez vous à ce site :

    http://www.comscripts.com/sources/php.fonction-recursivereaddir.263.html

    @+

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS