Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: nicolaslep le le 14-03-2009 a 10:53:17

Titre: découper un url
Posté par: nicolaslep le le 14-03-2009 a 10:53:17

Bonjour,
je recher une fonction qui me permetrai de decouper une url du type http://www.monsite.com/galerie/primtemps/index.html
Pour en sortir le repertoire "printemps" tout ce que j'ai trouvé me permet juste de sortir index.html
Merci de votre aide

Titre: Re:découper un url
Posté par: Krash le le 14-03-2009 a 11:24:19

tu souhaites récupérer tous les répertoires ou juste le dernier ?

tu peux faire comme cela
Citation:
$url = "http://www.monsite.com/galerie/primtemps/index.html";
$var = explode('/', str_replace('http://', '', $url));
for($i=1; $i<count($var)-1; $i++) {
echo $var[$i] . "<br />";
}


Tu obtiendras ceci :
Citation:
galerie
primtemps


donc ce qui ce passe:
str_replace va enlever le http://
explode va diviser ton url a chaque fois qu'il rencontrera un /
et mettra tous les morceaux dans un tableau

Dans la boucle for, on part avec $i=1 pour prendre le premier répertoire, si tu mets à 0 tu auras le nom de domaine sans le http://
count() va compter le nombre d'occurences dans ton tableau.
count() retournera donc 4, comme la première occurence est 0, la dernière sera donc 3.
On aurai très bien pu mettre for($i=1; $i<2; $i++)
Mais peut être que tu savais déjà tout ca.
Puis à la fin on affiche le tout.


Sinon tu peux utiliser la fonction dirname()
Citation:
echo dirname($url);


Tu obtiendras ceci:
http://www.monsite.com/galerie/primtemps


Ou alors pathinfo()
Citation:
$path_parts = pathinfo($url);
echo $path_parts['dirname'] . "<br>";
echo $path_parts['basename'] . "<br>";
echo $path_parts['extension'] . "<br>";
echo $path_parts['filename'] . "<br>";


Ce qui donnera :
Citation:
http://www.monsite.com/galerie/primtemps
index.html
html
index


Voila en espérant avoir aidé

Titre: Re:découper un url
Posté par: nicolaslep le le 14-03-2009 a 13:06:52

Merci bien pour ces expliquations ça fonctionne bien seulement je rencontre un autre probleme!

En fait je voulai recuperer le repertoire pour changer la couleur du lien du menu qui corespond a la page active
mais mon menu est inseré sur le site grace a un include si je met ce code dans la page menu.php il me renvoie l'url du menu et si je le met dans l'index de la page il me renvoi le bon resultat mais je n'arrive pas a recuperer la variable dans la page menu.php

Titre: Re:découper un url
Posté par: Krash le le 14-03-2009 a 13:11:06

Serait il possible de voir ton code ?
Ou au moins en parti

Titre: Re:découper un url
Posté par: nicolaslep le le 14-03-2009 a 13:19:01

voici une des page index.php don je veux recuperer le repertoire


Citation:
<html>
<head>
<?php
include('http://start10g.ovh.net/~catherinkl/franck/head.php');
?>
</head>
<body>
<?php

$url = $_SERVER['PHP_SELF'];

$var = explode('/', str_replace('http://', '', $url));
for($i=3; $i<count($var)-1; $i++) {

}

?>
<center>


<?php
include('http://start10g.ovh.net/~catherinkl/franck/menu.php');
?>

<object type="application/x-shockwave-flash" height="450" width="950" data="theSnakeMenuV3.swf">
             <param name="movie" value="theSnakeMenuV3.swf"></param><param name="LOOP" value="true" /><param name="wmode" value="transparent" />
             </object><?php
include('http://start10g.ovh.net/~catherinkl/franck/bas.php');
?>
             </center>
            
             </body>
             </html>




et voici la page menu.php



Citation:
<?php

echo $var[$i];
?>
<br><br>
<h1><img src=http://start10g.ovh.net/~catherinkl/franck/franck_prignet.png></h1>
<img src=http://start10g.ovh.net/~catherinkl/franck/barre_haut.png>
<span class=menu>
<a href="http://start10g.ovh.net/~catherinkl/franck/bio" onMouseOver="ChangeMessage('ma biographie ma biographie ma biographie','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">bio</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/editorial" onMouseOver="ChangeMessage('press press press press press','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">editorial</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/projects" onMouseOver="ChangeMessage('people people people people people','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">projects</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/twilight" onMouseOver="ChangeMessage('girly girly girly girly girly girly','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">twilight</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/feelings" onMouseOver="ChangeMessage('22 nights 22 nights 22 nights 22 nights ','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">feelings</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/urban" onMouseOver="ChangeMessage('lightpainting lightpainting lightpainting lightpainting lightpainting lightpainting','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">urban</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/europa" onMouseOver="ChangeMessage('moonlight','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">europa</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/mexico" onMouseOver="ChangeMessage('far away','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">mexico</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/journey" onMouseOver="ChangeMessage('mexico','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">journey</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/24_nights" onMouseOver="ChangeMessage('europa','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">24 nights</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/people" onMouseOver="ChangeMessage('france','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">people</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/attitudes" onMouseOver="ChangeMessage('NY city','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">attitudes</a> |
<a href="http://start10g.ovh.net/~catherinkl/franck/specials" onMouseOver="ChangeMessage('special','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">Specials</a><br>
<a href="http://start10g.ovh.net/~catherinkl/franck/links.php" onMouseOver="ChangeMessage('mes liens préférés','ejs_texte')" onMouseOut="ChangeMessage('','ejs_texte')">Links</a></span>







Titre: Re:découper un url
Posté par: Krash le le 14-03-2009 a 13:37:34

En fait chacune de tes pages sont un fichier index.php dans un dossier différent qui font appel au menu.php c'est ca ?

Dans ce cas pourquoi ne pas tout simplement définir une variable ou une constante dans chacun de tes index.php et selon ce que la variable ou constante contient, changer la couleur du menu ?

Sinon tu souhaites faire quoi récupérer le nom du dernier dossier ?
Dans ce cas pas besoin de boucle for surtout que dans le code du menu, $i n'est pas définie.

dans le fichier index.php remplaces
Citation:
$var = explode('/', str_replace('http://', '', $url));
for($i=3; $i<count($var)-1; $i++) {

}


par
Citation:
$var = explode('/', str_replace('http://', '', $url));


et dans ton fichier menu.php
Citation:
<?php
echo $var[$i];
?>


par
Citation:
<?php
echo $var[count($var)-2];
?>



En tout cas niveau photographie c'est super, très belles photos !

Titre: Re:découper un url
Posté par: nicolaslep le le 14-03-2009 a 13:56:59

Oui c'est vrai mais le probleme reste identique si je met le code dans l'index.php ca fonctionne:
Citation:
<?php
$var = explode('/', str_replace('http://', '', $_SERVER["HTTP_REFERER"]));
echo $var[count($var)-2];
?>


Mais si je ne met que ce code dans l'index:
Citation:
<?php
$var = explode('/', str_replace('http://', '', $_SERVER["HTTP_REFERER"]));

?>



et celui la dans menu.php ca ne fonctionne plus
Citation:
<?php
echo $var[count($var)-2];
?>


???

Titre: Re:découper un url
Posté par: Krash le le 14-03-2009 a 14:05:09

et en remplaçant
Citation:
<?php
include('http://start10g.ovh.net/~catherinkl/franck/menu.php');
?>


par
Citation:
<?php
include('menu.php');
?>


ensuite selon ou se trouve ton fichier index.php il faudra mettre ../menu.php etc

ou alors mettre le chemin qui commence par /home/.....

tu peux le connaitre en faisant ceci
echo dirname(__FILE__);
que tu mets dans ton fichier menu.php

Titre: Re:découper un url
Posté par: nicolaslep le le 14-03-2009 a 14:11:33

rohh ca merde encore ca me met le repertoire de la page précédente...
laisses tomber je vais faire ça en passant un paramètre dans l'url des liens du menu
MERCI beaucoup quand meme de m'avoir aider


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.