BBcode und interner Link

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • BBcode und interner Link

    Hallo Forum,

    ich habe ein gut funktionierende BBcode klasse, habe aber einen spezial Fall, den ich mit meinen PHP Kenntnissen nicht geregelt bekomme.

    Ich benötige einen internen Link, der auf die Datei content.php zugreift und die Variable id per ?id=2 übergibt.

    Das Ganze sähe dann so aus:

    [i_url=2]Text[/i_url]

    2 ist die ID in der Datenbank, Text der zu verlinkende Text.

    Das Ergebnis sollte demnach so aussehen:

    <a href="content.php?id=2">Text</a>

    Als Beispiel des Aufbaus mal einer meiner (erfolglosen) Versuche.

    PHP-Code:
    function getbbCode($para
        { 
    // BBcode Search Array 
            
    $search = array( 
            
    "/(\[)(i_url)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/i_url\])/siU",
            
    "/(\[)(i_url)(\])([^\"']*)(\[\/i_url\])/siU"); 
             
            
    // BBcode Replace Array 
            
    $replace = array( 
            
    "<a class=\"link\" style=\"".$css['link']."\" href=\"content.php?cid=\\7\">\\4</a>"
            
    "<a class=\"link\" style=\"".$css['link']."\" href=\"content.php?cid=\\7\">\\4</a>"
    ); 
             
            
    $para=preg_replace($search$replace$para); 
            
    $para=nl2br($para); 
            return 
    $para

    Schön, wenn mit jemand helfen könnte.

    Gruß

    Tommy

  • #2
    sowas?
    http://regexp-evaluator.de/evaluator...ef2d/#ergebnis

    Kommentar


    • #3
      Genau so etwas.

      Besten Dank für die schnelle Hilfe.

      schönen Abend noch.

      Tommy

      Kommentar


      • #4
        Hmmmm,

        funktioniert soweit ganz gut. Nur stehe ich jetzt vor dem Problem, wie ich das umwandele sobald 2 oder mehr interne Links vorkommen.
        Der Versuch, das in meine Funktion einzubinden hat mich nicht so richtig weit gebracht. kann mir nochmal jemand einen Tipp geben.

        Gruß

        Tommy

        Kommentar


        • #5
          zeig doch mal deinen versuch.

          Kommentar


          • #6
            PHP-Code:
            $text="[i_url=2]Text[/i_url]<br>[i_url=55]Viel mehr text[/i_url]<br>";

            $text=getbbCode($text);
            echo 
            "--$text--";

            function 
            getbbCode($para
                { 
            // BBcode Search Array 
                    
            $search = array("&\[i_url=(.*)\](.*)\[\/i_url\]&is");
                     
                    
            // BBcode Replace Array 
                    
            $replace = array("<a class=\"link\" style=\"".$css['link']."\" href=\"content.php?cid=\\7\">\\4</a>"); 
                     
                    
            $para=preg_replace($search$replace$para); 
                    
            $para=nl2br($para); 
                    return 
            $para

            Kommentar


            • #7
              ich tippe zwar auf den modifier U, aber du darfst trotzdem erklären, was hierbei passiert, die ausgabe zeigen und das problem beschreiben. meine güte, bin ich hellseher, oder was? so hilflos kann man sich doch nicht anstellen.

              Kommentar


              • #8
                Hallo penizillin,

                den Code habe ich einer existieren BBcode Klasse für exter links entnommen.

                Die Ausgabe soll so aussehen:
                <a href="content.php?id=2">Text</a>

                Was zur Zeit herauskommt ist:
                <a href="content.php?cid="></a>

                Die Funktion gibt also weder die ID noch den zu verlinkenden Text aus.

                Wie schon gesagt bis ich noch recht unbedarft was reguläre Ausdrücke angeht.

                Die gesamte Funktion in die ich das einbinden will sieht so aus:

                PHP-Code:
                php function getbbCode($para
                    { 
                // BBcode Search Array 
                        
                $search = array( 
                        
                "/\[\/br\]/siU"
                        
                "/(\[)(url)(=)(['\"]?)(www\.)([^\"']*)(\\4)(\])(.*)(\[\/url\])/siU"
                        
                "/(\[)(url)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/url\])/siU"
                        
                "/(\[)(url)(\])(www\.)([^\"]*)(\[\/url\])/siU"
                        
                "/(\[)(url)(\])([^\"']*)(\[\/url\])/siU",
                        
                "/(\[)(email)(\])([^\"']*)(\[\/email\])/siU"
                        
                "/(\[)(email)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/email\])/siU"
                        
                "/(\[)(color)(=)([^\W]*)(\])(.*)(\[\/color\])/siU"
                        
                "/(\[)(color)(=\#)([^\W]*)(\])(.*)(\[\/color\])/siU"
                        
                "/(\[)(size)(=)([^\W]*)(\])(.*)(\[\/size\])/siU"
                        
                "/(\[)(tooltip)(=)(.*)(\])(.*)(\[\/tooltip\])/siU"
                        
                "/(\[)(style)(=)([^\W]*)(\])(.*)(\[\/style\])/siU"
                        
                "/(\[)(ol)(\])(\r\n)*([^\r\n]*)(\[\/ol\])/siU"
                        
                //"/(\[)(ol)(\])(\r\n)*(.*)(\[\/ol\])/siU", 
                        
                "/(\[)(li)(\])(\r\n)*(.*)(\[\/li\])/siU"
                        
                "/(\[)(b)(\])(\r\n)*(.*)(\[\/b\])/siU"
                        
                "/(\[)(u)(\])(\r\n)*(.*)(\[\/u\])/siU"
                        
                "/(\[)(i)(\])(\r\n)*(.*)(\[\/i\])/siU"
                        
                "/(\[)(h1)(\])(\r\n)*(.*)(\[\/h1\])/siU"
                        
                "/(\[)(h2)(\])(\r\n)*(.*)(\[\/h2\])/siU"
                        
                "/(\[)(center)(\])(\r\n)*(.*)(\[\/center\])/siU"
                        
                "/(\[)(quote)(\])(\r\n)*(.*)(\[\/quote\])/siU"
                        
                "/(\[)(code)(\])(\r\n)*(.*)(\[\/code\])/siU"
                        
                "/(\[)(pre)(\])(\r\n)*(.*)(\[\/pre\])/siU"
                        
                "/(\[)(img)(\])(?!javascript:)(\r\n)*([^\"']*)(\[\/img\])/siU"
                        
                "/(\[)(zitat)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/zitat\])/siU"
                        
                "/about:/si"); 
                         
                        
                // BBcode Replace Array 
                        
                $replace = array( 
                        
                "<br />"
                        
                "<a class=\"link\" style=\"".$css['link']."\" href=\"http://www.\\6\" target=\"_blank\">\\9</a>"
                        
                "<a class=\"link\" style=\"".$css['link']."\" href=\"\\5\" target=\"_blank\">\\7</a>"
                        
                "<a class=\"link\" style=\"".$css['link']."\" href=\"http://www.\\5\" target=\"_blank\">\\5</a>"
                        
                "<a class=\"link\" style=\"".$css['link']."\" href=\"\\4\" target=\"_blank\">\\4</a>"
                        
                "<a class=\"link\" style=\"".$css['link']."\" href=\"content.php?cid=\\7\">\\4</a>"
                        
                "<a class=\"link\" style=\"".$css['link']."\" href=\"content.php?cid=\\7\">\\4</a>"
                        
                "<a class=\"link\" style=\"".$css['link']."\" href=\"mailto:\\4\" target=\"_blank\">\\4</a>"
                        
                "<a class=\"link\" style=\"".$css['link']."\" href=\"mailto:\\5\" target=\"_blank\">\\7</a>"

                        
                "<span style=\"color:\\4\">\\6</span>"
                        
                "<span style=\"color:#\\4\">\\6</span>"
                        
                "<span style=\"font-size:\\4px\">\\6</span>"
                        
                "<span class=\"tooltip\" onmouseover=\"showInfo('\\4')\" onmouseout=\"hideInfo()\">\\6</span>"
                        
                "<span style=\"font-family:\\4\">\\6</span>"
                        
                "<ol>\\5</ol>"
                        
                "<li>\\5</li>"
                        
                "<strong>\\5</strong>"
                        
                "<u>\\5</u>"
                        
                "<em>\\5</em>"
                        
                "<h1>\\5</h1>"
                        
                "<h2>\\5</h2>"
                        
                "<center>\\5</center>"
                        
                "<blockquote>Zitat:<br /><hr /><br />\\5<hr /></blockquote>"
                        
                "<blockquote>Code:<br /><hr /><br />\\5<hr /></blockquote>"
                        
                "<pre>Code:<br />\\5</pre>"
                        
                "<img src=\"\\5\" alt=\"\" />"
                        
                "<blockquote>Zitat \\5 schrieb:<br /><hr /><br />\\7<hr /></blockquote>"
                        
                "About: "); 
                         
                        
                $para=preg_replace($search$replace$para); 
                        
                $para=nl2br($para); 
                        return 
                $para

                Zuletzt geändert von TommyD; 01.04.2007, 17:35.

                Kommentar


                • #9
                  dann musst du wohl debuggen. lass dir den inhalt von $para schön formatiert ausgeben. du wirst merken, dass du beim link generieren mit \4 und \7 völlig daneben liegst (wie kommst du überhaupt auf diese zahlen?=

                  Kommentar


                  • #10
                    Die Zahlen habe ich mir aus dem vorhanden Script entliehen und rum probiert. Was brauchbares ist aber nicht dabei rausgekommen.

                    Ich sitze jetzt mit Buch und Google schon ziemlich lange vor dem Problem, komme aber einfach nicht weiter.

                    Kommentar


                    • #11
                      dann zeig mal $para.

                      Kommentar


                      • #12
                        Original geschrieben von TommyD
                        Die Zahlen habe ich mir aus dem vorhanden Script entliehen und rum probiert. Was brauchbares ist aber nicht dabei rausgekommen.
                        die zahlen sind backreferenzen des entsprechenden regex. also \1 entspricht dem ersten klammerausdruck usw.

                        im ersetzungsarray befinden sich deine einträge an 6. und 7. stelle (warum eigentlich doppelt?) im sucharray dagegen befinden sich aber dazu email-regex. ein bisschen konfus, was du da veranstaltest.

                        Kommentar


                        • #13
                          $para ist
                          <a href="content.php?cid=2]Text[/i_url]<br>[i_url=55">2]Text[/i_url]<br>[i_url=55</a>

                          bei:
                          $replace = array("<a href=\"content.php?cid=\\1\">\\1</a>");


                          Mein Prblem sind die regulären Ausdrücke, vor denen ich scon Stunden verbracht habe, die mir aber einfach nicht in den Kopf wollen.
                          Hier werde ich mich wohl noch einige Zeit mit beschäftigen müssen.

                          Wie müsste es denn aussehen, damit es funktioniert?

                          Kommentar


                          • #14
                            Original geschrieben von penizillin
                            ich tippe zwar auf den modifier U, ...
                            und mach mal danach \1 und \2 statt \1 und \1.

                            Kommentar


                            • #15
                              Danke, danke, danke. Eine Odyssee hat ein Ende.

                              Aber mit dem Thema bin ich noch nicht fertig. Das gibt noch viel Arbeit

                              Gruß

                              Tommy

                              Kommentar

                              Lädt...
                              X