[PHP] Probleme avec les regex
8 messages
• Page 1 sur 1
- Stellvia
- WRInaute occasionnel

- Messages: 449
- Inscription: 28 Déc 2004
[PHP] Probleme avec les regex
Bonjour,
J'ai une url et je cherche a supprimer le nom de la page ( si elle existe ) tout en gardant le reste de l'arborescence .
Voici quelques exemples basique pour illustrer :
1 www.domaine.com
2 www.domaine.com/repertoire/
3 www.domaine.com/repertoire
4 http://www.domaine.com/repertoire/page.php
5 http://www.domaine.com/repertoire/zeze/ ... p?zeze=zze
Je cherche à avoir comme résultat :
1 www.domaine.com/
2 www.domaine.com/repertoire/
3 www.domaine.com/repertoire/
4 http://www.domaine.com/repertoire/
5 http://www.domaine.com/repertoire/zeze/abc/
Je me tord les cheveux depuis 1 heure avec les regex et je n'arrive pas à trouver de solution adequate .
J'ais aussi cherché du coté de path info ( http://www.php.net/pathinfo ) , mais cela ne m'aide pas .
Exemple avec $path_parts['dirname'];
ca affiche http://www.domaine.com/repertoire
C'est ok..... mais....
PAR CONTRE
affiche http://www.domaine.com
alors que j'aimerais avoir http://www.domaine.com/repertoire/
bref c'est pour ca que je me suis lancé dans les regex .
Mais je trouve pas de solution .
Quelqu'un peut m'aider ?
J'ai une url et je cherche a supprimer le nom de la page ( si elle existe ) tout en gardant le reste de l'arborescence .
Voici quelques exemples basique pour illustrer :
1 www.domaine.com
2 www.domaine.com/repertoire/
3 www.domaine.com/repertoire
4 http://www.domaine.com/repertoire/page.php
5 http://www.domaine.com/repertoire/zeze/ ... p?zeze=zze
Je cherche à avoir comme résultat :
1 www.domaine.com/
2 www.domaine.com/repertoire/
3 www.domaine.com/repertoire/
4 http://www.domaine.com/repertoire/
5 http://www.domaine.com/repertoire/zeze/abc/
Je me tord les cheveux depuis 1 heure avec les regex et je n'arrive pas à trouver de solution adequate .
J'ais aussi cherché du coté de path info ( http://www.php.net/pathinfo ) , mais cela ne m'aide pas .
Exemple avec $path_parts['dirname'];
- Code: Tout sélectionner
$url="http://www.domaine.com/repertoire/page.php";
$path_parts = pathinfo($url);
echo $path_parts['dirname'];
ca affiche http://www.domaine.com/repertoire
C'est ok..... mais....
PAR CONTRE
- Code: Tout sélectionner
$url="http://www.domaine.com/repertoire/";
$path_parts = pathinfo($url);
echo $path_parts['dirname'];
affiche http://www.domaine.com
alors que j'aimerais avoir http://www.domaine.com/repertoire/
bref c'est pour ca que je me suis lancé dans les regex .
Mais je trouve pas de solution .
Quelqu'un peut m'aider ?
-

bproductiv - WRInaute accro

- Messages: 4146
- Inscription: 27 Déc 2004
Si ca peut t'aider voici une cheat sheet toute fraiche d'hier :
http://www.addedbytes.com/cheat-sheets/ ... eat-sheet/
http://www.addedbytes.com/cheat-sheets/ ... eat-sheet/
-

Jeviensderio - WRInaute passionné

- Messages: 1340
- Inscription: 29 Sep 2006
Les expressions régulières sont inefficaces dans ce cas là.
Je teste si c'est un un répertoire ou non par la présence du / terminal:
$x = substr($path, -1, 1);
S'il n'y a pas de / final, j'utilise pathinfo.
Je teste si c'est un un répertoire ou non par la présence du / terminal:
$x = substr($path, -1, 1);
S'il n'y a pas de / final, j'utilise pathinfo.
- Tilt
- WRInaute impliqué

- Messages: 858
- Inscription: 26 Mar 2005
Jeviensderio a écrit:Les expressions régulières sont inefficaces dans ce cas là.
C'est puissant pourtant les regexp :
Pourrais-tu essayer celle-ci ?
$url=preg_replace("`/[^/]+\.[^/]+$`","/",$url);
Je n'ai pas testé, mais si elle ne marche pas on reviendra dessus....
-

seebz - WRInaute impliqué

- Messages: 808
- Inscription: 15 Avr 2007
$url = 'xxx';
$filename = parse_url( $url );
$filename = $filename['file'];
$clean_url = str_replace($filename, '', $url);
A tester
edit: j'avais pas vu le cas des paramètres ?xxx=yyy mais tu dois les retrouver dans le tableau retourné par parse_url()
$filename = parse_url( $url );
$filename = $filename['file'];
$clean_url = str_replace($filename, '', $url);
A tester
edit: j'avais pas vu le cas des paramètres ?xxx=yyy mais tu dois les retrouver dans le tableau retourné par parse_url()
-

UsagiYojimbo - WRInaute accro

- Messages: 8304
- Inscription: 23 Nov 2005
Sinon peut-être bien plus simple : http://www.php.net/manual/fr/function.dirname.php
- Tilt
- WRInaute impliqué

- Messages: 858
- Inscription: 26 Mar 2005
Re: [PHP] Probleme avec les regex
Toutes vos idées sans regexp ont un défaut, c'est qu'elles traitent -www.domaine.com/repertoire non comme un dossier mais comme un fichier, et renvoient -www.domaine.com/
C'est le problème du départ.
Au fait, -www.domaine.com existe vraiment ! Il récupère de bons backlinks avec ce post...
Stellvia a écrit:2 -www.domaine.com/repertoire/
3 -www.domaine.com/repertoire
C'est le problème du départ.
Au fait, -www.domaine.com existe vraiment ! Il récupère de bons backlinks avec ce post...
-

seebz - WRInaute impliqué

- Messages: 808
- Inscription: 15 Avr 2007
Re: [PHP] Probleme avec les regex
Tilt a écrit:Toutes vos idées sans regexp ont un défaut, c'est qu'elles traitent -www.domaine.com/repertoire non comme un dossier mais comme un fichier, et renvoient -www.domaine.com/
if( !ereg('/$', $url) && !ereg('^http:\/\/.+\/.+\..+', $url) ) $url .= '/';
ca résoudrait pas le problème ?
edit : pas sur de la syntaxe mais l'idée est d'ajouter un / à la fin s'il n'y a pas de point (à l'exception du nom de domaine)
8 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
