IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

[Url Rewriting] Regex complexe


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Par défaut [Url Rewriting] Regex complexe
    Bonjour à tous,

    Alors j'ai un regex de ce type :

    RewriteRule ^(.*)-(.*)-(.*).html$ $1.php?id=$2&news=$3 [L]

    Une fonction qui me vire les espaces et caracteres speciaux d'une chaine en "_".

    Donc si je lui envoi :

    $text = "hello c'est moi";
    echo Nstr($text);

    Sa me renvoi : "hello_c_est_moi" .

    Si l'id de la news "hello c'est moi" est 1 j'ai une url de ce type :

    article-1-hello_c_est_moi.html

    Seulement j'aimerais qu'elle soit comme sa :

    article-1-hello-c-est-moi.html

    Seulement sa plante probleme de regex il crois que chaque tiret est une nouvelle réference...

    Quel regex me faudrait t'il employer svp ?

    Merci

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    1- Avoir trois ".*" dans la même regex, c'est un coup à avoir une regex qui fait n'importe quoi. Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^-]+)-([^-]+)-([^-]+).html$ $1.php?id=$2&news=$3 [L]
    Bien sûr, elle serait encore mieux écrite si tu mettais les types dans les crochets comme [0-9] par exemple. Je ne peux pas le savoir pour toi :/

    2- Ton problème ne se situe pas au niveau du .htaccess comme tu le laisses entendre mais, visiblement, c'est au niveau de la fonction Nstr().

  3. #3
    Membre confirmé Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Par défaut
    Merci de ta réponse

    Voici la fonction Nstr() :

    function Nstr($txt) {
    $new = ereg_replace("['?!:./, ]", "-", $txt);
    $new= strtr($new,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
    return $new;
    }

    Merci

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Là, je ne vois pas un seul underscore _ ni dans la RewriteRule ni dans la fonction Nstr()... Je ne sais pas d'où vient ton exemple article-1-hello_c_est_moi.html.

    Tu pourrais éventuellement te servir de la fonction clean_url_parameter() qui se trouve dans les archives à télécharger ici (tout à la fin dans le Mod phpBB) :
    http://g-rossolini.developpez.com/tu...url-rewriting/
    Je t'en parle car elle est plus performante que ton Nstr().

    Je t'ai donné tout ce que j'ai pu. À toi de jouer et, si ça ne fonctionne pas, nous aurons besoin de davantage d'informations.

    Bonne chance.

  5. #5
    Membre confirmé Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Par défaut
    Les underscore cétais avant là la fonction j'ai deja remplacer par des - mais justement sa bug ...

    Je vais tester avec ta fonction merci

  6. #6
    Membre confirmé Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Par défaut
    Non, je confirme cela ne vient pas de ma fonction !

    Ma fonction transforme bien les espace et caractere speciaux en - !

    Seuelment le probleme vient du regex qui apres pour l'url rewriting considere le - qui remplace les espaces et caractere speciaux par le - du separateur des variables passer par l'url !

    Je veux savoir comment faire pour faire comme : http://www.clubic.com pour leur news par exemple ils on l'id le type de module et le titre de la page qui est envoyer !

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. URL rewriting - REGEX
    Par tydoo34 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 07/11/2011, 02h47
  2. url rewriting complexe
    Par IP-Fix dans le forum Apache
    Réponses: 1
    Dernier message: 07/12/2008, 21h06
  3. Aide pour un regex url rewriting
    Par Bouki dans le forum Apache
    Réponses: 2
    Dernier message: 12/11/2008, 10h02
  4. [url rewriting] Regex plus propre ?
    Par seb_perl dans le forum Apache
    Réponses: 1
    Dernier message: 14/12/2005, 16h47
  5. [RegEx] url rewriting - regex
    Par vnk600 dans le forum Langage
    Réponses: 1
    Dernier message: 20/11/2005, 22h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo