Anzeige

bbcode problem

bbcode problem | PSD-Tutorials.de

Erstellt von aydesign, 15.10.2011.

  1. aydesign

    aydesign Guest

    bbcode problem
    Hallo zusammen,

    hab das bbcode Tutorial von hier ausprobiert: http://alice-grafixx.de/PHP-MYSQL-Tutorial/BBCode-176
    Aber es kommt bei mir immer dieser Fehler: Parse error: syntax error, unexpected ';' in /home/www/cwcity/hosting/a/y/aydesign/htdocs/data/bbcode.php on line 106

    Das ist der Code:
    PHP:
    1.     $offset = 0;
    2.     while(($pos = strpos($bb, '[code]0[/code]', $pos);
    3.         if($end === false) break;
    4.         $code = substr($bb, $pos + 6, $end - ($pos + 6));
    5.         $strlen = strlen($code) + 13;
    6.         $code = '<pre>'.str_replace('', '', $code).'</pre>';
    7.         $end += 7;
    8.         $offset = $end - ($strlen - strlen($code));
    9.         $bb = substr_replace($bb, $code, $pos, $end - $pos);
    10.     }
    11.    
    (Fehlerhafte Zeile ist die zweite - while(........)


    Hoffe dass jemand weiter weiß...

    Mfg ;)

    Andy
     
    #1      
  2. cebito

    cebito undefined

    262
    Dabei seit:
    08.03.2008
    Beiträge:
    8.316
    Geschlecht:
    männlich
    Ort:
    Dresden
    Kameratyp:
    zum durchgucken
    bbcode problem
    AW: bbcode problem

    Schau dir mal die anderen Schleifen im Tut an, die werden (üblicherweise ;) ) mit einer geschweiften Klammer eingeleitet. Der Tutschreiber scheint indes ziemlich von sich eingenommen, in den Kommentaren wird dieser Fehler angemerkt, was er mit einem "bei mir funktionierts" abtut. In dieser Zeile befinden sich im übrigen auch noch zwei öffnende Klammern, die nicht geschlossen sind.
     
    #2      
  3. Doitsu

    Doitsu Aktives Mitglied

    Dabei seit:
    15.04.2009
    Beiträge:
    482
    bbcode problem
    AW: bbcode problem

    Wenn du auch fuer fertige Projekte offen bist, und es nicht selber machen willst (bzw. was passiert musst du schreiben - er nimmt dir nur die Grundfunktionen vom BBCode ab), wuerde ich dir http://www.christian-seiler.de/projekte/php/bbcode/ an Herz legen, wenn man da erst mal den dreh raus hat, ist diese Klasse recht nett.
     
    #3      
  4. aydesign

    aydesign Guest

    bbcode problem
    AW: bbcode problem

    Hi, hab noch ein Problem :p

    Der bbcode und wichtiger die Zeilenumbrüche werden mir einfach nicht angezeigt.

    PHP:
    1. $message=strip_tags($gettopic3['post']);
    2. $message=nl2br($message);
    3. $message=bbcode($message);
    4.  
    5.     echo "$message<hr><br />";
    6.     echo "</td></tr>";
    So wird der Beitrag wiedergegeben, aber es passiert nichts.
    So wird mir Text angezeigt:
    .....................
    hallo\r\nunterstrichen\r\n
    .....................

    Wollte: hallo und unterstrichen mit Zeilenumbruch schreiben, aber so spuckt er mir es dann aus.

    Mfg Andy
     
    #4      
  5. Doitsu

    Doitsu Aktives Mitglied

    Dabei seit:
    15.04.2009
    Beiträge:
    482
    bbcode problem
    AW: bbcode problem

    Poste mal bitte deinen ganzen Code, vor allem was bei der Funktion 'bbcode' gemacht wird. Und gebe dir mal mit var_dump($message); den Inhalt aus und schau ab welcher stelle die '\r\n' drin sind.
     
    #5      
  6. lachender_engel

    lachender_engel Aktives Mitglied

    Dabei seit:
    23.03.2009
    Beiträge:
    1.276
    Geschlecht:
    männlich
    Ort:
    Die Welt
    Software:
    Adobe Creative Suite CS6 Design & Web, Notepad++, IrfanView, Jetbrains PhpStorm
    Kameratyp:
    Nikon D7200
    bbcode problem
    AW: bbcode problem

    Hier werden zu viele Klammern geöffnet und nicht geschlossen.
    Das hier dürfte die Lösung sein:
    PHP:
    1. while($pos = strpos($bb, '[code]0[/code]', $pos));
     
    #6      
  7. aydesign

    aydesign Guest

    bbcode problem
    AW: bbcode problem

    Hi,

    also das hier ist mein bbcode: (hab ihn noch a bissl umgeschrieben aber geht trotzdem nicht)

    PHP:
    1. <?php
    2.  
    3.     error_reporting(E_ALL);
    4.     function BBCode($Text)
    5.     {
    6.     $Text = str_replace("<", "&lt;", $Text);
    7.     $Text = str_replace(">", "&gt;", $Text);
    8.     $URLSearchString = " a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'";
    9.     $MAILSearchString = $URLSearchString . " a-zA-Z0-9\.@";
    10.             if (substr($Text,0, 7) == "http://"){
    11.     $Text = eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", "<a href=\"\\1://\\2\\3\">\\1://\\2\\3</a>", $Text);
    12.     $Text = nl2br($Text);
    13.             } else {
    14.     $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '<a href="javascript:go(\'$1\',\'new\')">$1</a>', $Text);
    15.     $Text = preg_replace("(\[url\=([$URLSearchString]*)\](.+?)\[/url\])", '<a href="javascript:go(\'$1\',\'new\')">$2</a>', $Text);
    16.     $Text = nl2br($Text);
    17.             }
    18.     $Text = preg_replace("(\[mail\]([$MAILSearchString]*)\[/mail\])", '<a href="mailto:$1">$1</a>', $Text);
    19.     $Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.+?)\[\/mail\]/", '<a href="mailto:$1">$2</a>', $Text);
    20.     $Text = preg_replace("(\[b\](.+?)\[\/b])is",'<span class="bold">$1</span>',$Text);
    21.     $Text = preg_replace("(\[i\](.+?)\[\/i\])is",'<span class="italics">$1</span>',$Text);
    22.     $Text = preg_replace("(\[u\](.+?)\[\/u\])is",'<span class="underline">$1</span>',$Text);
    23.     $Text = preg_replace("(\[s\](.+?)\[\/s\])is",'<span class="strikethrough">$1</span>',$Text);
    24.     $Text = preg_replace("(\[o\](.+?)\[\/o\])is",'<span class="overline">$1</span>',$Text);
    25.     $Text = preg_replace("(\[color=(.+?)\](.+?)\[\/color\])is","<span style=\"color: $1\">$2</span>",$Text);
    26.     $Text = preg_replace("(\[size=(.+?)\](.+?)\[\/size\])is","<span style=\"font-size: $1px\">$2</span>",$Text);
    27.     $Text = preg_replace("/\
    28. [list\](.+?)\[\/list\]/is", '<ul class="listbullet">$1</ul>' ,$Text);
    29.     $Text = preg_replace("/\
    30. [list=1\](.+?)\[\/list\]/is", '<ul class="listdecimal">$1</ul>' ,$Text);
    31.     $Text = preg_replace("/\
    32. [list=i\](.+?)\[\/list\]/s", '<ul class="listlowerroman">$1</ul>' ,$Text);
    33.     $Text = preg_replace("/\
    34. [list=I\](.+?)\[\/list\]/s", '<ul class="listupperroman">$1</ul>' ,$Text);
    35.     $Text = preg_replace("/\
    36. [list=a\](.+?)\[\/list\]/s", '<ul class="listloweralpha">$1</ul>' ,$Text);
    37.     $Text = preg_replace("/\
    38. [list=A\](.+?)\[\/list\]/s", '<ul class="listupperalpha">$1</ul>' ,$Text);
    39.     $Text = str_replace("
    40. [*]", "<li>", $Text);
    41.     $Text = preg_replace("(\[font=(.+?)\](.+?)\[\/font\])","<span style=\"font-family: $1;\">$2</span>",$Text);
    42.    
    43.     $Text = str_replace(':P', '<img src="../layout/smileys/000.gif" width="15" height="14" border="0">', $Text);
    44.     $Text = str_replace(':)', '<img src="../layout/smileys/001.gif" width="15" height="14" border="0">', $Text);
    45.     $Text = str_replace(';)', '<img src="../layout/smileys/002.gif" width="15" height="14" border="0">', $Text);
    46.     $Text = str_replace(':(', '<img src="../layout/smileys/003.gif" width="15" height="14" border="0">', $Text);
    47.     $Text = str_replace('*grr*', '<img src="../layout/smileys/004.gif" width="15" height="14" border="0">', $Text);
    48.     $Text = str_replace('0.o', '<img src="../layout/smileys/005.gif" width="15" height="14" border="0">', $Text);
    49.     $Text = str_replace('*_*', '<img src="../layout/smileys/006.gif" width="15" height="14" border="0">', $Text);
    50.     $Text = str_replace('._.', '<img src="../layout/smileys/007.gif" width="15" height="14" border="0">', $Text);
    51.     $Text = str_replace('-.-', '<img src="../layout/smileys/008.gif" width="15" height="14" border="0">', $Text);
    52.     $Text = str_replace(':D', '<img src="../layout/smileys/009.gif" width="15" height="14" border="0">', $Text);
    53.    
    54.     return $Text;
    55. }
    56.  
    57. ?>
    und das hier das Script wo ich ihn einbinden will

    PHP:
    1. <?php
    2.  
    3. include "config.php";
    4. include "../data/bbcode.php";
    5.  
    6. $id=$_GET['id'];
    7.  
    8.     echo "[ <A href='test.php'>Zurück zum Index</a>&nbsp;&nbsp;|&nbsp;&nbsp;<A href='post.php'>Neues Thema</a> ]<br /><br />";
    9.     echo "<table width='750' class='designtable'>";
    10.     echo "<tr><td width=20%><h1>Autor</h1></td><td width=80%><h1>Frage / Antworten</h1></td></tr>";
    11.  
    12. $gettopic="SELECT * from test where postid='$id'";
    13. $gettopic2=mysql_query($gettopic) or die("Kein Thema gefunden.");
    14. $gettopic3=mysql_fetch_array($gettopic2);
    15.  
    16.     echo "<tr class='mainrow'><td valign='top'><strong><u>$gettopic3[author]</u></strong></td><td vakign='top'>Letzte Antwort: $gettopic3[showtime]<br><hr>";
    17.  
    18. $message=strip_tags($gettopic3['post']);
    19. $message=BBCode($message);
    20.  
    21.     echo "$message<hr><br />";
    22.     echo "</td></tr>";
    23.  
    24. $getreplies="Select * from test where parentid='$id' order by postid desc";
    25. $getreplies2=mysql_query($getreplies) or die("Keine Antworten vorhanden!");
    26.  
    27. while($getreplies3=mysql_fetch_array($getreplies2))
    28.  
    29. {
    30.  
    31.    echo "<tr class='mainrow'><td valign='top'><strong><u>$getreplies3[author]</u></strong></td><td vakign='top'>Letzte Antwort: $getreplies3[showtime]<br><hr>";
    32.  
    33.    $message=strip_tags($getreplies3['post']);
    34.    $message=BBCode($message);
    35.  
    36.    echo "$message<hr><br />";
    37.    echo "</td></tr>";
    38.  
    39. }
    40.  
    41.     echo "</table>";
    42.  
    43. ?>
    habs auch schon mit

    PHP:
    1.    $message=strip_tags($getreplies3['post']);
    2.  $message=nl2br($message);
    3.    $message=BBCode($message);
    Den Code möchte ich bei mehreren Scripte verwenden, aber komischerweise funktioniert nur die Umwandlung der Smilies funktion und bei meinem Kommentar Script der Zeilenumbruch. Aber bei diesem Script hier funktioniert nichtmal der Umbruch. Und die Möglichkeit Text zu formatieren funktioniert bei keinem Script.

    Hab bei diesem Script hier, auch schon probiert den Zeilenumbruch ohne BBCode nur mit nl2br zu machen, aber es funtkioniert einfach nicht. :motz:

    Hoffe dass jemand weiter weiß!

    Mfg
    Andy
     
    #7      
  8. Doitsu

    Doitsu Aktives Mitglied

    Dabei seit:
    15.04.2009
    Beiträge:
    482
    bbcode problem
    AW: bbcode problem

    Die meisten regex Befehle sind falsch, mach mal ini_set('display_errors', 1); unter das error_reporting.
    Du startest den regex Befehl nicht mit einen gueltigen delimiter (ich benutze immer # - man erkennt ihn sofort, da er selten innerhalb eines Befehls auftaucht, dein Slash ist aber auch ok - aber die Klammer kann nicht benutzt werden, und selbst wenn, muesste es 2x die gleiche sein, nicht vorne oeffnen und hinten schliessen).

    also z.B.
    Code (Text):
    1. preg_replace("#\[o\](.+?)\[\/o\]#is",'<span class="overline">$1</span>',$Text);
    Warum die Zeilenumbrueche nicht richtig angezeigt werden kann ich dir jetzt nicht sagen, da muesstest du wirklich mal mit var_dump rumgehen und gucken ab wann diese falsch sind.
     
    Zuletzt bearbeitet: 16.10.2011
    #8      
  9. aydesign

    aydesign Guest

    bbcode problem
    AW: bbcode problem

    also das wird als Fehler angezeigt wenn ich - var_dump - anzeigen lasse:

    Parse error: syntax error, unexpected T_ECHO in /home/www/cwcity/hosting/a/y/aydesign/htdocs/askme/message.php on line 23

    die Zeile 23 ist:

    echo "$message<hr><br />";
     
    #9      
  10. aydesign

    aydesign Guest

    bbcode problem
    AW: bbcode problem

    ok, hab bei var_dump ein ; vergessen :)

    Das wird mir dann als Text ausgegeben: string(83) "test\r\n\r\n " test\r\n\r\n

    ursprünglich wollte ich zweimal -test- schreiben mit zeilenumbruch
     
    #10      
  11. Doitsu

    Doitsu Aktives Mitglied

    Dabei seit:
    15.04.2009
    Beiträge:
    482
    bbcode problem
    AW: bbcode problem

    Na ja. du sollst das var_dump an mehreren Stellen ausgeben, damit du siehst, ab wann die '\r\n' drin stehen..

    PHP:
    1. <?
    2. function BBCode($Text)
    3. {
    4.     echo '<pre>start > ';
    5.     var_dump($Text);
    6.     $Text = str_replace("<", "&lt;", $Text);
    7.     $Text = str_replace(">", "&gt;", $Text);
    8.     $URLSearchString = " a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'";
    9.     $MAILSearchString = $URLSearchString . " a-zA-Z0-9\.@";
    10.     if (substr($Text, 0, 7) == "http://")
    11.     {
    12.         $Text = eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", "<a href=\"\\1://\\2\\3\">\\1://\\2\\3</a>", $Text);
    13.         $Text = nl2br($Text);
    14.     }
    15.     else
    16.     {
    17.         $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '<a href="javascript:go(\'$1\',\'new\')">$1</a>', $Text);
    18.         $Text = preg_replace("(\[url\=([$URLSearchString]*)\](.+?)\[/url\])", '<a href="javascript:go(\'$1\',\'new\')">$2</a>', $Text);
    19.         $Text = nl2br($Text);
    20.     }
    21.  
    22.     echo '<hr />1 > ';
    23.     var_dump($Text);
    24.     $Text = preg_replace("(\[mail\]([$MAILSearchString]*)\[/mail\])", '<a href="mailto:$1">$1</a>', $Text);
    25.     $Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.+?)\[\/mail\]/", '<a href="mailto:$1">$2</a>', $Text);
    26.     $Text = preg_replace("(\[b\](.+?)\[\/b])is", '<span class="bold">$1</span>', $Text);
    27.     $Text = preg_replace("(\[i\](.+?)\[\/i\])is", '<span class="italics">$1</span>', $Text);
    28.     $Text = preg_replace("(\[u\](.+?)\[\/u\])is", '<span class="underline">$1</span>', $Text);
    29.     $Text = preg_replace("(\[s\](.+?)\[\/s\])is", '<span class="strikethrough">$1</span>', $Text);
    30.     $Text = preg_replace("(\[o\](.+?)\[\/o\])is", '<span class="overline">$1</span>', $Text);
    31.     $Text = preg_replace("(\[color=(.+?)\](.+?)\[\/color\])is", "<span style=\"color: $1\">$2</span>", $Text);
    32.     $Text = preg_replace("(\[size=(.+?)\](.+?)\[\/size\])is", "<span style=\"font-size: $1px\">$2</span>", $Text);
    33.     $Text = preg_replace("/\[list\](.+?)\[\/list\]/is", '<ul class="listbullet">$1</ul>', $Text);
    34.     $Text = preg_replace("/\[list=1\](.+?)\[\/list\]/is", '<ul class="listdecimal">$1</ul>', $Text);
    35.     $Text = preg_replace("/\[list=i\](.+?)\[\/list\]/s", '<ul class="listlowerroman">$1</ul>', $Text);
    36.     $Text = preg_replace("/\[list=I\](.+?)\[\/list\]/s", '<ul class="listupperroman">$1</ul>', $Text);
    37.     $Text = preg_replace("/\[list=a\](.+?)\[\/list\]/s", '<ul class="listloweralpha">$1</ul>', $Text);
    38.     $Text = preg_replace("/\[list=A\](.+?)\[\/list\]/s", '<ul class="listupperalpha">$1</ul>', $Text);
    39.     $Text = str_replace("[*]", "<li>", $Text);
    40.     $Text = preg_replace("(\[font=(.+?)\](.+?)\[\/font\])", "<span style=\"font-family: $1;\">$2</span>", $Text);
    41.  
    42.     echo '<hr />2 > ';
    43.     var_dump($Text);
    44.  
    45.     $Text = str_replace(':P', '<img src="http://www.psd-tutorials.de/forum/layout/smileys/000.gif" width="15" height="14" border="0">', $Text);
    46.     $Text = str_replace(':)', '<img src="http://www.psd-tutorials.de/forum/layout/smileys/001.gif" width="15" height="14" border="0">', $Text);
    47.     $Text = str_replace(';)', '<img src="http://www.psd-tutorials.de/forum/layout/smileys/002.gif" width="15" height="14" border="0">', $Text);
    48.     $Text = str_replace(':(', '<img src="http://www.psd-tutorials.de/forum/layout/smileys/003.gif" width="15" height="14" border="0">', $Text);
    49.     $Text = str_replace('*grr*', '<img src="http://www.psd-tutorials.de/forum/layout/smileys/004.gif" width="15" height="14" border="0">', $Text);
    50.     $Text = str_replace('0.o', '<img src="http://www.psd-tutorials.de/forum/layout/smileys/005.gif" width="15" height="14" border="0">', $Text);
    51.     $Text = str_replace('*_*', '<img src="http://www.psd-tutorials.de/forum/layout/smileys/006.gif" width="15" height="14" border="0">', $Text);
    52.     $Text = str_replace('._.', '<img src="http://www.psd-tutorials.de/forum/layout/smileys/007.gif" width="15" height="14" border="0">', $Text);
    53.     $Text = str_replace('-.-', '<img src="http://www.psd-tutorials.de/forum/layout/smileys/008.gif" width="15" height="14" border="0">', $Text);
    54.     $Text = str_replace(':D', '<img src="http://www.psd-tutorials.de/forum/layout/smileys/009.gif" width="15" height="14" border="0">', $Text);
    55.  
    56.     echo '<hr />end > ';
    57.     var_dump($Text);
    58.     return $Text;
    59. }
     
    #11      
x
×
×