Partage
  • Partager sur Facebook
  • Partager sur Twitter

Regex qui plante (pour un lien)

Je comprends pas pourquoi

Sujet résolu
    13 février 2006 à 14:42:25

    Bonjour à tous,
    Voilà pour mon forum, je veux autoriser mes visiteurs à mettre des liens ou des images dans leur signature, j'utilise donc les regex pour ça. Depuis bientôt une heure, j'essaye de faire une Regex qui marche et bien sûr, elle ne marche pas ^^
    Voilà la Regex
    $signature=preg_replace('!&lt;lien=\"(^(http://)(w{3}\.)?[a-zA-Z0-9_./?-]{5,})\"&gt;([a-zA-Z0-9_./?-])+&lt;/lien&gt;!', "<a href=\"$1\">$4</a>", $signature) ;

    Et le code que je récupére

    Citation : SQL

    &lt;lien=\"http://www.gta-lcs.info/lien.php\"&gt;Lien&lt;/lien&gt;


    J'ai déjà essayé avec le str_replace à la place du preg_replace et ça marche, mais est-ce plus rapide trois str_replace comparé à un seul preg_replace ??
    D'avance je vous remercie
    • Partager sur Facebook
    • Partager sur Twitter
      13 février 2006 à 14:46:40

      heu &gt; ca veux dire ca : [ ] parceque si c'est le cas met les crochets directement et pas le code ASCII
      • Partager sur Facebook
      • Partager sur Twitter
        13 février 2006 à 14:58:55

        ben met < et > au lieu de mettre leurs code ASCII
        • Partager sur Facebook
        • Partager sur Twitter
          13 février 2006 à 15:02:53

          Je viens d'essayer et ça ne marche pas ^^
          Le problème est que cette Regex ne s'éxécute pas. Je précise qu'elle est précédée d'un htmlentities et d'un addslashes
          • Partager sur Facebook
          • Partager sur Twitter
            13 février 2006 à 15:08:56

            fait ca ca marchera sans doute mieux : $signature = preg_replace&#40;'!lien=([a-z0-9._/-]+)>(.+)/lien>!isU', '<a href=&quot;$1&quot;>$2</a>', $signature&#41;;
            • Partager sur Facebook
            • Partager sur Twitter
              13 février 2006 à 15:09:38

              Met ta regex avant:
              //ta regex puis..
              $signature=htmlentities(addslashes($signature));
              • Partager sur Facebook
              • Partager sur Twitter
              Erreur PDO - Installation Wamp - Docs PHP et MYSQL.
                13 février 2006 à 15:15:21

                b-dav => sa a aucune chance de marcher comme ça ^^ .Sa reviendrais a mettre ça en code html valide, puis à neutraliser toute forme de html juste après, tu vois bien que ça peut pas marcher ton idée ^^
                • Partager sur Facebook
                • Partager sur Twitter
                  13 février 2006 à 15:15:43

                  hum apparemment mon post a buggé donc je reprend :

                  <span class="re0">$signature</span> = <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&amp;#40;</span><span class="st0">'!<span class="es0"><</span>lien=([a-z0-9._/-]+)<span class="es0">></span>(.+)<span class="es0"><</span>/lien<span class="es0">></span>!isU'</span>, <span class="st0">'&lt;a href=&amp;quot;$1&amp;quot;&gt;$2&lt;/a&gt;'</span>, <span class="re0">$signature</span><span class="br0">&amp;#41;</span>; 


                  ... ca bug toujours.. je ne pourais pas te montrer mon code alor
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 février 2006 à 15:18:21

                    Oué sa bugue même pas mal ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 février 2006 à 15:40:10

                      çà ne bug pas, c'est simplement que # sert pour les commentaires tout comme //, donc mets ton post en html au lieu de PHP et çà marchera.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 février 2006 à 15:41:39

                        Tant pis, je vais faire avec str_replace et des array contenant ce qui doit être recherché/remplacé. Merci quand même ^^
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Regex qui plante (pour un lien)

                        × 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