Partage
  • Partager sur Facebook
  • Partager sur Twitter

Regex remise en cause dans un routes.xml

    30 août 2017 à 11:18:34

    Bonjour,

    Les regex, c'est vraiment pas mon truc. J'essaye vraiment, hein, mais les nuances si petites avec des conséquences si gigantesques me laissent impuissant. Bref. Dans mon routes.xml, j'ai la route suivante :

    <route url="/tendances/([0-9]+)/[a-z0-9-]+" module="Tendances" action="show" vars="id"></route>  	

    L'idée est d'autoriser les url de type www.monsupersite.fr/tendances/88/un-super-titre-de-news. Et ça fonctionne sans souci.

    Sauf que lorsque le visiteur utilise l'appli Buffer pour partager en un clic une page, Buffer rajoute à l'url "?utm_content=bufferc3631&utm_medium=social&utm_source=linkedin.com&utm_campaign=buffer". Donc des ?, des _, des ., des & et des =. Évidemment, ma super regex actuelle ne reconnait pas la forme et renvoie vers ma magnifique page 404. Du coup, il faut que je la modifie.

    J'ai pensé à "/tendances/([0-9]+)/[a-z0-9-?=_.&]+" mais là c'est tout le site qui passe en 404.

    Un peu d'aide s'il vous plait ?

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2017 à 11:25:19

      Salut,

      Hihi, c'est normal. Certains de tes caractères (? particulièrement) sont des caractères ayant une utilité spéciale dans une regex.

      Il faut les échapper avec un \.

      Je t'invite à aller par ici pour plus d'info ;)

      Vise un truc de ce genre plutôt (non testé).  

      /tendances/([0-9]+)/[a-z0-9\?=_\.&-]+

      Pour tester tes regex, je te conseil d'utiliser un outil en ligne comme celui-ci : https://regex101.com/

      -
      Edité par Bristalle 30 août 2017 à 11:30:22

      • Partager sur Facebook
      • Partager sur Twitter
        30 août 2017 à 11:27:16

        Oui entre temps j'ai trouvé ceci [a-z0-9\/:%_+.,#?!@=-]+

        Mais le caractère & semble poser problème. Quand il est dans la regex le site en entier passe en 404. Et si il n'y est pas, l'adresse buffer n'est pas reconnue. Je continue de chercher.

        Edit : j'ai remplacé la seconde regex par ".+" censée il me semble autoriser tout caractère. Et là, ça fonctionne.  Je suis à la fois content et déçu. J'aimerais comprendre.

        -
        Edité par Roswell 30 août 2017 à 14:37:54

        • Partager sur Facebook
        • Partager sur Twitter

        Regex remise en cause dans un routes.xml

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown