Ankündigung

Einklappen
Keine Ankündigung bisher.

MyBB Text in PHP benutzen

Einklappen

Neue Werbung 2019

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

  • MyBB Text in PHP benutzen

    Guten Tag, ich habe ein problem. Ich möchte aus der Forumsoftware MyBB einen Thread auf meiner Startseite anzeigen lassen. Jedoch sind dort codes enthalten wie: [align=center], [color=#ff0000] und viele mehr. Jetz ist meine Frage wie kann ich diese Codes in PHP anzeigen lassen so das sie Funktionieren ?


  • #2
    Hallo,

    google mal nach "php bbcode parser". Dh den BBCode mit so einem parsen und dann gepsannt sein was rauskommt
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Willkommen im Forum.

      Sinnvoll ist es sicherlich, die Renderlogik der Forensoftware aufzurufen. (Ob ein generischer BBCode-Parser für alle etwaigen forenspezifischen Tags funktioniert, ist mehr oder weniger Glückssache.) Wie das genau geht, kann zumindest ich nicht sagen, da ich die Software nicht kenne. Vielleicht liegt das fertige HTML auch schon irgendwo mit in der Datenbank. Das wird gern aus Caching-Gründen gemacht.

      Siehe auch:

      - http://www.php.de/php-einsteiger/543...produkten.html

      Kommentar


      • #4
        Ich habe nun diesen(http://christian-seiler.de/projekte/php/bbcode/) Parser in mein PHP Script eingebaut. Jedoch verändert sich nichts am Code.

        PHP-Code:
        require_once 'parser/stringparser_bbcode.class.php'

        Kommentar


        • #5
          Die require_once-Zeile ist eher uninteressant. Wie rufst du das denn auf?

          (Dass ich nicht glaube, dass das die geeignete Vorgehensweise ist, habe ich ja gesagt.)

          Kommentar


          • #6
            Angesehen von der "suche und verwende den HTML-Cache", die ich glaub ich als erstes anschauen würde, ev. hilft dir das ja weiter:

            http://phpdave.com/MyBBIntegrator/Co...on_parseString ("parse String")

            Since MyBB (and various other bulletin boards) store post messages by using BBCodes (or MyCodes), a function would come in handy, which parses these "raw" posts and transforms the BBCodes into the appropriate html code for correct and intended message display. This is the purpose of the function parseString
            Siehe auch: http://community.mybb.com/thread-132717.html
            Da würde ich an deiner Stelle auch einfach mal nachfragen, die haben die Info sicher flotter bei der Hand.

            LG
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Habe es nun so weit hinbekommen, aber ein problem habe ich noch. Bei den Beiträgen werden immer solche "?" angezeigt. Siehe:

              Kommentar


              • #8
                Das sind Unicode Replacement Characters. Die können zum Beispiel dann entstehen, wenn du Multibyte-Zeichen „zerschneidest“, also einzelne Bytes entfernst oder dergleichen.

                Da stimmt irgendwo was mit den Zeichensätzen nicht und/oder du wendest Funktionen, die nicht multibyte-fähig sind (strpos, substr, …), falsch an.

                - http://en.wikipedia.org/wiki/Special...ment_character

                Kommentar


                • #9
                  Dies ist die Funktion die ich benutzen.

                  PHP-Code:
                  function showBBcodes($text) {

                  // BBcode array
                  $find = array(
                  '~\[b\](.*?)\[/b\]~s',
                  '~\[s\](.*?)\[/s\]~s',
                  '~\[i\](.*?)\[/i\]~s',
                  '~\[u\](.*?)\[/u\]~s',
                  '~\[quote\](.*?)\[/quote\]~s',
                  '~\[size=(.*?)\](.*?)\[/size\]~s',
                  '~\[color=(.*?)\](.*?)\[/color\]~s',
                  '~\[url\]((?:ftp|https?)://.*?)\[/url\]~s',
                  '~\[align=(.*?)\](.*?)\[/align\]~s',
                  '~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s'
                  );
                  // HTML tags to replace BBcode

                  $replace = array(
                  '<b>$1</b>',
                  '<s>$1</s>',
                  '<i>$1</i>',
                  '<span style="text-decoration:underline;">$1</span>',
                  '<pre>$1</'.'pre>',
                  '<span style="font-size:$1px;">$2</span>',
                  '<span style="color:$1;">$2</span>',
                  '<a href="$1">$1</a>',
                  '<div align="$1">$2</div>',
                  '<img style="height:auto; width:auto; max-width:700px; max-height:700px;" src="$1" alt="" />'

                  );

                  $message preg_replace("#&(?!\#[0-9]+;)#si""&amp;"$text); // fix & but allow unicode
                  $message str_replace("<","&lt;",$text);
                  $message str_replace(">","&gt;",$text);

                  return 
                  preg_replace($find,$replace,$text);

                  Wie kann ich es dann nun anders machen das die Zeichen nicht mehr falsch dargestellt werden ?

                  Kommentar


                  • #10
                    Sieht im Grunde okay aus.

                    Debuggen.

                    - http://phpforum.de/forum/showthread.php?t=216988
                    - http://php-de.github.io/#debugging

                    Kommentar


                    • #11
                      Kodiere die PHP-Datei mal mit UTF8 oder anderen Zeichensätzen.

                      Kommentar

                      Lädt...
                      X