kostenloser Webspace werbefrei: lima-city


bbcode

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    thehm

    thehm hat kostenlosen Webspace.

    hi hab wieder mal ein proble damit XD
    wie mache ich das unter gp-team
    ein link mit gp-team steht?
    ich nutz str_replace und tag/array">arrays

    bitte helft mir
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage


  3. function bbcode($bbcode) {
    $bbcode = stripslashes ($bbcode);
    $muster = array();
    $ersetzten = array();

    $muster[] = "/&/U";
    $ersetzen[] = '&';

    $muster[] = "/</U";
    $ersetzen[] = '&lt;';

    $muster[] = "/>/U";
    $ersetzen[] = '&gt;';

    $muster[] = "/\"/U";
    $ersetzen[] = ' &quot; ';

    $muster[] = "/\n/i";
    $ersetzen[] = '<br \>';

    $muster[] = "/\[b\](.*?)\[\/b\]/U";
    $ersetzen[] = '<span class="b">$1</span>';

    $muster[] = "/\[i\](.*?)\[\/i\]/U";
    $ersetzen[] = '<span class="i">$1</span>';

    $muster[] = "/\[u\](.*?)\[\/u\]/U";
    $ersetzen[] = '<span class="u">$1</span>';

    $muster[] = "/\[quote\](.*?)\[\/quote\]/U";
    $ersetzen[] = '<div class="quote">Zitat: <br \>$1</div>';

    $muster[] = '/\[url=(.*)\](.*)\[\/url\]/U';
    $ersetzen[] = '<a href="\1" target="_blank">\2</a>';

    $muster[] = "/\[url\](.*)\[\/url\]/U";
    $ersetzen[] = '<a href="\1" target="_blank">\1</a>';

    $muster[] = "/\[img\](.*?)\[\/img\]/U";
    $ersetzen[] = '<img src="\1" border="0" \>';

    $muster[] = "/\[li\](.*)\[\/li\]/U";
    $ersetzen[] = '<li>$1</li>';

    $muster[] = "/\[ul\](.*)\[\/ul\]/U";
    $ersetzen[] = '<ul>$1</ul>';

    $muster[] = "/\[php\](.*?)\[\/php\]/U";
    $ersetzen[] = '<blockquote><div class="pre">PHP-Code:<br>\1<hr noshade></div></blockquote>';

    $muster[] = "/\[code\](.*)\[\/code\]/U";
    $ersetzen[] = '<blockquote><div class="pre">Code:<br>\1<hr noshade></div></blockquote>';

    $muster[] = "/\[pre\](.*)\[\/pre\]/U";
    $ersetzen[] = '<div class="pre">\1</div>';

    $bbcode = eregi_replace ("http://www.", "www.", $bbcode);
    $bbcode = eregi_replace ("www.", "http://www.", $bbcode);
    $bbcode = preg_replace ($muster, $ersetzen, $bbcode);
    $bbcode = preg_replace ("#(^|[^\"=]{1})(http://|ftp://|mailto:|https://)([^\s<>]+)([\s\n<>]|$)#sm","\\1<a target=\"_blank\" href=\"\\2\\3\">\\3</a>\\4",$bbcode);
    return $bbcode;
    }


    Der Aufruf erfolgt durch $text = bbcode ($text); !
    Das Script basiert auf dem Script vom Jacr und wurde bei News4Lima eingesetzt!
  4. Autor dieses Themas

    thehm

    thehm hat kostenlosen Webspace.

    das alles zu erkl?ren w?re wahrscheinlich schwachsinnig jetzt hei?t die variable in der das gemacht werden soll $row['Inhalt'] soll ich die in die variable text umbenennen? oder das andere?
  5. Du schreibst jetzt einfach :

    $row["Inhalt"] = bbcode ($row["Inhalt"]);

    Das wars!
  6. m*********1

    kann dieser code alle Funktionen wie fett, unterstreichen krusiv udn Link
    und auch das mit dem php code?
  7. Ja, vorrausgesetzt das du die CSS "Anweisungen" erstellst!
    Also z.B. :
    span.b {
    font-weight: bold;
    }

    span.i {
    font-style: italic;
    }

    span.u {
    text-decoration: underline;
    }

    div.quote {
    margin: 10px;
    padding: 4px;
    border: 1px solid #8396C9;
    }

    div.code {
    margin: 10px;
    padding: 4px;
    border: 1px solid #8396C9;
    }
  8. m*********1

    wenn ich mich nicht t?usche ist doch b der befhel f?r fett, nur es wird nicht fett gemacht

    <html>
    <head>
    <style type="css/text">
    span.b
    font-weight: bold;
    }

    span.i
    font-style: italic;
    }

    span.u
    text-decoration: underline;
    }

    div.quote
    margin: 10px;
    padding: 4px;
    border: 1px solid #8396C9;
    }

    div.code
    margin: 10px;
    padding: 4px;
    border: 1px solid #8396C9;
    }

    </style>
    </head>
    <body>

    <?php

    function bbcode($bbcode)
    {
    $bbcode = stripslashes ($bbcode);
    $muster = array();
    $ersetzten = array();

    $muster[] = "/&/U";
    $ersetzen[] = '&';

    $muster[] = "/</U";
    $ersetzen[] = '<';

    $muster[] = "/>/U";
    $ersetzen[] = '>';

    $muster[] = "/\"/U";
    $ersetzen[] = ' " ';

    $muster[] = "/\n/i";
    $ersetzen[] = '<br \>';

    $muster[] = "/\[b\](.*?)\[\/b\]/U";
    $ersetzen[] = '<span class="b">$1</span>';

    $muster[] = "/\[i\](.*?)\[\/i\]/U";
    $ersetzen[] = '<span class="i">$1</span>';

    $muster[] = "/\[u\](.*?)\[\/u\]/U";
    $ersetzen[] = '<span class="u">$1</span>';

    $muster[] = "/\[quote\](.*?)\[\/quote\]/U";
    $ersetzen[] = '<div class="quote">Zitat: <br \>$1</div>';

    $muster[] = '/\[url=(.*)\](.*)\[\/url\]/U';
    $ersetzen[] = '<a href="\1" target="_blank">\2</a>';

    $muster[] = "/\[url\](.*)\[\/url\]/U";
    $ersetzen[] = '<a href="\1" target="_blank">\1</a>';

    $muster[] = "/\[img\](.*?)\[\/img\]/U";
    $ersetzen[] = '<img src="\1" border="0" \>';

    $muster[] = "/\[li\](.*)\[\/li\]/U";
    $ersetzen[] = '<li>$1</li>';

    $muster[] = "/\[ul\](.*)\[\/ul\]/U";
    $ersetzen[] = '<ul>$1</ul>';

    $muster[] = "/\[php\](.*?)\[\/php\]/U";
    $ersetzen[] = '<blockquote><div class="pre">PHP-Code:<br>\1<hr noshade></div></blockquote>';

    $muster[] = "/\[code\](.*)\[\/code\]/U";
    $ersetzen[] = '<blockquote><div class="pre">Code:<br>\1<hr noshade></div></blockquote>';

    $muster[] = "/\[pre\](.*)\[\/pre\]/U";
    $ersetzen[] = '<div class="pre">\1</div>';

    $bbcode = eregi_replace ("http://www.", "www.", $bbcode);
    $bbcode = eregi_replace ("www.", "http://www.", $bbcode);
    $bbcode = preg_replace ($muster, $ersetzen, $bbcode);
    $bbcode = preg_replace ("#(^|[^\"=]1})(http://|ftp://|mailto:|https://)([^\s<>]+)([\s\n<>]|$)#sm","\\1<a target=\"_blank\" href=\"\\2\\3\">\\3</a>\\4",$bbcode);
    return $bbcode;
    }

    $text = $_POST["text"];

    $text = bbcode ($text);

    echo $text;

    ?>
    </body>
    </html>




    EDIT 0-checka
    Doppelpost gel?scht. Inhalt des zweiten Posts:

    ok ich habe es anders gemacht und zwar so:
    $bb_codes = array(
       
      '[b]' => '<span style="font-weight:bold">',
      '[/b]' => '</span>',
        
      '[i]' => '<span style="font-style:italic">',
      '[/i]' => '</span>',
        
      '[u]' => '<span style="text-decoration:underline">',
      '[/u]' => '</span>',
      
      '[[/b]code[/b]]' => '<td class="code"><span style="color:green;font-size:12px">',
      '[/[b]code[/b]]' => '</span></td>'
      );

    jetzt habe ich noch ein Problem, wie kann ich das jetzt noch mit dem [url] machen und wie setzte ich ein Hightlight f?r PHP?


    Beitrag ge?ndert am 9.07.2005 15:45 von mastermoul1


    Beitrag ge?ndert am 9.07.2005 16:51 von 0-checka


    Beitrag ge?ndert am 9.07.2005 17:35 von jacr

  9. Wenn du folgendes schreibst, dann kann es auch nicht klappen :

    [...]
    span.b
    font-weight: bold;
    }
    [...]


    Versuchs mal so :

    span.b {
    font-weight: bold;
    }




    jetzt habe ich noch ein Problem, wie kann ich das jetzt noch mit dem [url] machen und wie setzte ich ein Hightlight f?r PHP?

    Die BB-Code "[url]" und "" werden schon ersetzt! :wink: Wenn du PHP Code hervorheben willst, dann nimm am besten die Funktion von Alopex in seiner essentials.php! -> http://alopex.pyrokar.lima-city.de/index.php/PHP/essentials.html Beitrag ge?ndert am 9.07.2005 17:13 von lucas9991 Beitrag ge?ndert am 9.07.2005 17:13 von lucas9991
  10. m*********1

    kannst du nicht f?r meinen, code hinschreiben, wie ich das mti php machen muss, damit die ]url] ersetzt werden?. W?re ziemlich nett, verstehe das von dem link nicht...
  11. lucas9991 schrieb:

    function bbcode($bbcode) {
    $bbcode = stripslashes ($bbcode);
    $muster = array();
    $ersetzten = array();

    $muster[] = '/&/U';
    $ersetzen[] = '&';

    $muster[] = '/</U';
    $ersetzen[] = '<';

    $muster[] = '/>/U';
    $ersetzen[] = '>';

    $muster[] = '/\'/U';
    $ersetzen[] = ' " ';

    $muster[] = '/\n/i';
    $ersetzen[] = '<br \>';

    $muster[] = '/\[b\](.*?)\[\/b\]/U';
    $ersetzen[] = '<span class='b'>$1</span>';

    $muster[] = '/\[i\](.*?)\[\/i\]/U';
    $ersetzen[] = '<span class='i'>$1</span>';

    $muster[] = '/\[u\](.*?)\[\/u\]/U';
    $ersetzen[] = '<span class='u'>$1</span>';

    [...]

    Wenn man das so macht, wird nichts ersetzt, wenn zwischen zwei Tags (z.B. [ quote] [ /quote]) ein Zeilenumbruch steht. Wie kann ich den Zeilenumbruch mit in die regul?ren Ausdr?cke reinnehmen? Br?uchte das mal, damit ich auch Umbr?che in Zitaten, fettem Text, etc. haben kann.

    Beitrag ge?ndert am 9.12.2005 21:35 von phattek
  12. Option /m f?r "multiline" macht, das der Punkt auch f?r Zeilenumbr?che steht.
  13. alopex schrieb:
    Option /m f?r 'multiline' macht, das der Punkt auch f?r Zeilenumbr?che steht.

    Ich hab einfach keinen Plan! wo muss denn die Option hin?

    ("/\[quote\](.*)\[\/quote\]/U")

    und wie erreiche ich, dass ich die quotes auch verschachteln kann?

    Beitrag ge?ndert am 9.12.2005 21:48 von phattek

  14. alopex schrieb:
    Option /m f?r 'multiline' macht, das der Punkt auch f?r Zeilenumbr?che steht.

    Ich hab einfach keinen Plan! wo muss denn die Option hin?


    Vor oder hinter das gro?e U (wo ist egal).



    ("/\[quote\](.*)\[\/quote\]/U")

    und wie erreiche ich, dass ich die quotes auch verschachteln kann?


    Indem du das gro?e U wegl?sst.

    Ob die Verschachtelungen dann aber korrekt sind, kannst du nicht allein mit Regul?ren Ausdr?cken ?berpr?fen. Es gibt aber eine PEAR-Package f?r richtige BBCodes:

    Download:
    http://pear.php.net/package/HTML_BBCodeParser

    Doku (Englisch):
    http://pear.php.net/package/HTML_BBCodeParser/docs/latest/

    Die kann das. Nur frag mich bitte nicht nach Tipps dazu ... Ich gebe WikiCode den Vorzug vor BBCode.
  15. So m?sste es also mit Zeilenumbr?chen und Verschachtelungen gehen?
    "/\[quote\](.*)\[\/quote\]/m"

    Tut es jedenfalls nicht!

    Das hier:
    "/\[quote\](.*?)\[\/quote\]/m"
    geht auch nicht.
  16. Naja, stimmt! Einfach das gro?e U weglassen, ist nicht die L?sung. Dann frisst der Regex ja alles, bis zum letzten [/qu&#1086;t&#1077;].

    Ich glaube, dass geht mit RegEx alleine gar nicht zu l?sen. Da brauchst du noch ein bisschen PHP-Code dazu.

    $my_bbcode = '...';

    while(
    preg_match('/\[quote\](.*)\[\/quote\]/Um',
    bbcode)
    ) {
    $my_bbcode = preg_replace(
    '/\[quote\](.*)\[\/quote\]/Um',
    '<div class="quote">Zitat: <br \>$1</div>',
    $my_bbcode
    );
    }

    Das hab ich jetzt aber nicht getestet. Die Vorgehensweise ist folgende:

    Die Schleife wird so lange wiederholt, wie sich ein [qu&#1086;t&#1077;]...[/qu&#1086;t&#1077;]-Paar drin befindet. Da der RegEx nicht gierig ist ("U"), sucht er immer das n?chste schlie?ende Tag. Dadurch werden erst die inneren Quotes aufgel?st und dann die ?u?eren, bis keine mehr da sind.

    Kann das mal jemand kompetentes ?berpr?fen?
  17. Also gut, lassen wir das mit dem Verschachteln mal weg!

    Ich krieg es trotzdem nicht hin mehzeilige Quotes zu ersetzten.

    weder das
    /\[quote\](.*?)\[\/quote\]/Um
    noch das
    /\[quote\](.*)\[\/quote\]/Um
    funktioniert!

  18. Also gut, lassen wir das mit dem Verschachteln mal weg!

    Ich krieg es trotzdem nicht hin mehzeilige Quotes zu ersetzten.

    weder das
    /\[quote\](.*?)\[\/quote\]/Um
    noch das
    /\[quote\](.*)\[\/quote\]/Um
    funktioniert!

    Dann probier das :
    /\[quote\](.*)\[\/quote\]/Usi
    Funktionierte jedenfalls bei mir. ;-)

    MfG Luacs
  19. Funktionierts jetzt? Sonst muss ich das Script/den RegEx wirklich mal testen.

    Das "i" sorgt ?brigens daf?r, dass auch Gro?buchstaben, wie in [CODE] erkannt werden. Das ist sehr n?tzlich, auch in den anderen BBCode-Tags.

    Ich hab tats?chlich die Modifikatoren /m und /s verwechselt!

    Siehe auch
    http://de.php.net/manual/de/reference.pcre.pattern.modifiers.php

    i (PCRE_CASELESS)

    Wenn dieser Modifikator gesetzt ist, passen Buchstaben im Suchmuster sowohl auf gro?- als auch auf kleingeschriebene Buchstaben.

    m (PCRE_MULTILINE)

    Standardm??ig behandelt PCRE eine zu durchsuchende Zeichenkette wie eine einzige Zeile von Zeichen (auch wenn sie tats?chlich mehrere Zeilenumbr?che enth?lt). Das Metazeichen f?r einen Zeilenanfang (^) passt nur auf den Anfang der Zeichenkette, das Metazeichen f?r ein Zeilenende ($) nur auf das Ende der Zeichenkette (falls der Modifikator D nicht gesetzt ist). Das ist genauso wie bei Perl.

    Wenn dieser Modifikator gesetzt ist, passen die Zeilenanfang- und Zeilenende-Konstrukte in der Zeichenkette sowohl direkt nach, bzw. vor einem Zeilenumbruch als auch auf deren Anfang und Ende. Das entspricht dem Perl-Modifikator /m. Falls die Zeichenkette keine Sequenz "\n" enth?lt, oder im Suchmuster kein ^ oder $ vorkommt, hat dieser Modifikator keine Wirkung.

    s (PCRE_DOTALL)

    Wenn dieser Modifikator gesetzt ist, passt das Metazeichen Punkt im Suchmuster auf alle Zeichen inklusive Zeilenumbr?che. Ohne diesen Modifikator sind Zeilenumbr?che ausgeschlossen. Dieser Modifikator entspricht dem Perl-Modifikator /s. Unabh?ngig davon, ob dieser Modifikator gesetzt ist, passt eine verneinende Zeichenklasse wie z.B. [^a] immer auf einen Zeilenumbruch.


  20. while(
    preg_match('/\[quote\](.*)\[\/quote\]/Um',
    bbcode)
    ) {
    $my_bbcode = preg_replace(
    '/\[quote\](.*)\[\/quote\]/Um',
    '<div class="quote">Zitat: <br \>$1</div>',
    $my_bbcode
    );
    }

    Das hab ich jetzt aber nicht getestet. Die Vorgehensweise ist folgende:

    Die Schleife wird so lange wiederholt, wie sich ein [qu&#1086;t&#1077;]...[/qu&#1086;t&#1077;]-Paar drin befindet. Da der RegEx nicht gierig ist ("U"), sucht er immer das n?chste schlie?ende Tag. Dadurch werden erst die inneren Quotes aufgel?st und dann die ?u?eren, bis keine mehr da sind.

    Kann das mal jemand kompetentes ?berpr?fen?


    funktioniert bis auf das du ein $ vergessn hattest ;)

    sehr gut genau nach dme war ich auch auf der suche, danke!!
  21. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!