Partage
  • Partager sur Facebook
  • Partager sur Twitter

BBCODE: URL

Problème d'affichage de mon url

    22 avril 2009 à 0:18:18

    Bonjour à tous, j'utilise le bbcode du tutoriel du site du zéro (créer son forum de toute pièce), et celui-ci semble ne pas marcher pour la fonction de l'url.

    Dans ma page pour poster, j'ai ce code pour l'url :

    <input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
    


    et dans mon fichier bbcode que j'appelle avec un include, il y a ça (que j'ai trouvé dans le tutoriel également)

    $texte = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $texte);
    


    Dans mon post on voit ensuite [url]www.lesite.com[/url], en gros, ça ne fonctionne pas, il ne le remplace pas par le href.

    J'ai essayé de modifier cela avec un truc du style

    $texte = preg_replace('`\[url\](.+)\[/url\]`isU', '<a href="$1">$1</a>', $texte);
    


    mais dans ce cas là, il m'affiche http://MONsite.com/www.lesite.com, et évidemment, la page ne fonctionne pas.

    Est-ce que quelqu'un pourrait m'expliquer comment cela fonctionne, car je n'y connais rien en javascript, j'ai fais juste un copier coller du toto en espérant que ça fonctionne.

    Désolé du dérangement :s

    Ah, j'oubliais une autre partie du code (dont je ne connais pas l'utilité) que j'appelle avec un include aussi:

    <script>
    function bbcode(bbdebut, bbfin)
    {
    var input = window.document.formulaire.message;
    input.focus();
    if(typeof document.selection != 'undefined')
    {
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = bbdebut + insText + bbfin;
    range = document.selection.createRange();
    if (insText.length == 0)
    {
    range.move('character', -bbfin.length);
    }
    else
    {
    range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
    }
    range.select();
    }
    else if(typeof input.selectionStart != 'undefined')
    {
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
    var pos;
    if (insText.length == 0)
    {
    pos = start + bbdebut.length;
    }
    else
    {
    pos = start + bbdebut.length + insText.length + bbfin.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
    }
     
    else
    {
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos))
    {
    pos = prompt("insertion (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length)
    {
    pos = input.value.length;
    }
    var insText = prompt("Veuillez taper le texte");
    input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
    }
    }
    function smilies(img)
    {
    window.document.formulaire.message.value += '' + img + '';
    }
    </script>
    
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      24 avril 2009 à 17:32:42

      Le problème est du coté de PHP, ta deuxième regex est foireuse.
      • Partager sur Facebook
      • Partager sur Twitter
        25 avril 2009 à 17:53:27

        c'est-à-dire ? J'comprends pas trop :s
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          25 avril 2009 à 18:05:45

          c'est pas le javascript le problème. Tu as modifier la regex pour remplacer les liens a ce que j'ai compris.

          Reprends l'exemple du tuto, enfin là ou tu as trouver le code, essaie. Regarde que ça marche et ensuite remodifie petit bout par petit bout.
          • Partager sur Facebook
          • Partager sur Twitter
            26 avril 2009 à 21:23:34

            J'ai fais comme dans le tuto justement et on dirait que ça ne fonctionne pas :s

            Edit: en fait c'est bon j'ai compris. Le tuto est mal foutu, vu ce qu'il y a dans le bbcode, il suffit de tapper directement l'url en la commancant par HTTP et elle sera remplacée automatiquement (ou plutôt cliquable grace au href). Le problème est que dans la page poster.php il a mis un bouton "url" qui créer un [url] [/url] qui ne correspond absolument à rien dans le bbcode... Décidement je trouve énormément de bugs dans ce tuto :/
            • Partager sur Facebook
            • Partager sur Twitter
              26 avril 2009 à 22:04:54

              Beh faut juste faire :
              $texte = preg_replace('`\[url\](.+)\[/url\]`isU', '<a href="http://$1">$1</a>', $texte);
              
              • Partager sur Facebook
              • Partager sur Twitter
                26 avril 2009 à 22:08:15

                Non, ça ça marche pas, si tu met ça, il te met l'adresse de ton site comme racine, et il met le lien après.
                Du style:
                http://monsite.com/www.lelien.com

                Bref mon soucis c'est résolu par un autre moyen finalement. Merci quand même
                • Partager sur Facebook
                • Partager sur Twitter

                BBCODE: URL

                × 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