BBCode Script?

Rambo51

Erfahrenes Mitglied
Hallo,

Ich suche ein BBCode Tutorial bzw. Script. Ich habe mir hier schon mehrere Threads angeschaut aber komme da gar nicht mit klar.
Es ist für ein Newsscript. Ich habe von BBCode absolut keine ahnung, ich hoffe ihr könnt mir helfen. :)
In Google habe ich auch schon gesucht, hat mir aber auch nicht geholfen.

Gruss Rambo51
 
Hi,
Also ich habe selbst ein Forum geschrieben, und mir einen kleinen BBCode-satz genommen.

Den hab ich dann selbst mal erweitert:

PHP:
function bbcodes($text)
  {
  	$neuertext = stripslashes($text);
 	$neuertext = preg_replace("/\[img\](.*)\[\/img\]/isU", "<img src=\"$1\" border='0' />", $neuertext);
 	$neuertext = preg_replace("/\[center\](.*)\[\/center\]/isU", "<center>$1</center>", $neuertext);
  	$neuertext = preg_replace("/\[b\](.*)\[\/b\]/isU", "<b>$1</b>", $neuertext);
  	$neuertext = preg_replace("/\[i\](.*)\[\/i\]/isU", "<i>$1</i>", $neuertext);
  	$neuertext = preg_replace("/\[u\](.*)\[\/u\]/isU", "<u>$1</u>", $neuertext);
  	$neuertext = eregi_replace("([ \r\n])www\\.([^ ,\r\n]*)","\\1http://www.\\2",$neuertext);
  	$neuertext = eregi_replace("([ \r\n])http\:\/\/www\\.([^ ,\r\n]*)","\\1http://www.\\2",$neuertext);
  	$neuertext = preg_replace("/\[url\]www.(.*)\[\/url\]/isU", "http://www.$1", $neuertext);
 	$neuertext = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/", "<a href=\"\\1\" target='_blank'>\\2</a>", $neuertext);
 	$neuertext = preg_replace("/\[url\](.*)\[\/url\]/isU", "<a href='$1' target='_blank'>$1</a>", $neuertext);
 	$neuertext = preg_replace("/\[red\](.*)\[\/red\]/isU", "<font color='red'>$1</font>", $neuertext);
 	$neuertext = preg_replace("/\[blue\](.*)\[\/blue\]/isU", "<font color='blue'>$1</font>", $neuertext);
 	$neuertext = preg_replace("/\[yellow\](.*)\[\/yellow\]/isU", "<font color='yellow'>$1</font>", $neuertext);
 	$neuertext = preg_replace("/\[size=(.*)\](.*)\[\/size\]/isU", "<font size='$1'>$2</font>", $neuertext);
 	$neuertext = preg_replace("/\[quote\](.*)\[\/quote\]/isU", "<table border='1' cellspacing='0' cellpadding='2' bgcolor='EFEFEF' width='95%' align='center'><tr><td>$1</tr></td></table>", $neuertext);
 	$neuertext = preg_replace("/\[quote=(.*)\](.*)\[\/quote\]/isU", "<table border='1' cellspacing='0' cellpadding='2' bgcolor='EFEFEF' width='95%' align='center'><tr><td><i>Orginal von $1:</i><br><br>$2</tr></td></table>", $neuertext);
  	}
  	return $neuertext;
  }

Hoffe es hilft dir.

//EDIT:
Hier noch mal ne Hilfe: Klick mich!
 
Vielen Dank erstmal.

Aber wie muss ich das in der news-anzeige.php und in der news-eintragen.php jetzt einbinden?

Gruss Rambo51
 
Wenn du das im Eintragungsscript einbindest, hast du eine bessere Performance, da der Server das nur einmal pro eintragung ausführen muss. Wenn du das beim Anzeigenscript einbindest muss der Server das jedes mal bearbeiten.
 
Neok hat gesagt.:
Wenn du das im Eintragungsscript einbindest, hast du eine bessere Performance, da der Server das nur einmal pro eintragung ausführen muss. Wenn du das beim Anzeigenscript einbindest muss der Server das jedes mal bearbeiten.

Ok, danke.

Kannst du bzw. jemand anderes mir erklären wie ich das einbinden soll?

Gruss Rambo51
 
Also ich habe das im Forum bei der Textausgabe eingebunden, da ich dann auch alle einträge besser bearbeiten kann.
Aber das ist jedem selbst überlassen ;)
einbauen ist recht einfach:

Alles Kopieren,
Oben direkt beim start des PHP-Bereiches einfügen und später kannste es dann per
PHP:
echo bbcodes($meine_nachricht)
ausgeben.
(ist ja ne ganz normale Funktion)
 
vorher vielleicht noch die Funktion einfügen (copy-paste) oder inkludieren

include("bbparser.php")


Achja, zur späteren Nachbearbeitung ist es vielleicht besser den parser erst bei der ausgabe zu verwenden.
Soooo sehr leidet die Performance auch nicht - nicht solange die Seite von weniger als ~1000 (oder mehr?) leuten täglich besucht wird.
 
Hmm.... Ich bekomme es irgendwie nicht gebacken, das einzubinden!
Wäre jemand so nett es mir einzubinden?

Hier der Code der news.php
PHP:
<?php

$conn_id = mysql_connect($host,$id,$pw); 
mysql_select_db($database,$conn_id); 

?>

<?php 
} else { 

        echo "
<table align=\"center\" width=\"540\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\"  bordercolor=\"#000000\">

<tr>
    <td width=\"540\"><font color=\"#FFFFFF\"></font></td>
	</tr></table><p>
";
  $result = mysql_query("select * from $table ORDER BY datum DESC LIMIT 0, 4"); 

  if ($num = mysql_num_rows($result)) { 
    for($i=0;$i < $num; $i++) { 
      $titel = mysql_result($result,$i,"titel"); 
      $autor = mysql_result($result,$i,"autor"); 
	  $bild = mysql_result($result,$i,"bild"); 
	  $datum = mysql_result($result,$i,"datum"); 
	  $text = mysql_result($result,$i,"text"); 

echo "
	  <table width=\"550\" border=\"0\" bgcolor=\"black\" cellpadding=\"0\" cellspacing=\"1\">
  <!--DWLayoutTable-->
  <tr>
    <td height=\"28\" colspan=\"2\" valign=\"top\"><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
        <!--DWLayoutTable-->
        <tr>
          <td width=\"435\" style=\"background-image:url(images/content_bg.jpg)\" height=\"28\">$titel</td>
          <td width=\"113\" style=\"background-image:url(images/1stmc.jpg)\" valign=\"top\"><!--DWLayoutEmptyCell-->&nbsp;</td>
        </tr>
    </table></td>
  </tr>
  <tr>
    <td height=\"151\" colspan=\"2\" valign=\"top\"><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
      <!--DWLayoutTable-->
      <tr>
        <td width=\"468\" bgcolor=\"#F2F2F2\" rowspan=\"2\" valign=\"top\">text</td>
        <td width=\"80\" bgcolor=\"#F2F2F2\" height=\"80\"><div align=\"center\"><img src=\"images/$bild.jpg\" width=\"70\" height=\"70\"></div></td>
      </tr>
      <tr>
        <td height=\"71\" bgcolor=\"#F2F2F2\">&nbsp;</td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td width=\"274\" bgcolor=\"#F2F2F2\" height=\"24\">geschrieben von $autor</td>
    <td width=\"273\" bgcolor=\"#F2F2F2\"><div align=\"right\">$datum</div></td>
  </tr>
</table><br>
"; 
    } 
  } else echo "Keine News geschreiben"; 
} 
?>

Danke!

Gruss Rambo51
 
Kann mir keiner den Code so zusammen machen wie es dann auch sein muss? Ich bekomme das nicht gebacken! Bin noch am lernen :-(
 
probiere es so:

PHP:
<?php

function bbcodes($text)
  {
      $neuertext = stripslashes($text);
    $neuertext = preg_replace("/\[img\](.*)\[\/img\]/isU", "<img src=\"$1\" border='0' />", $neuertext);
    $neuertext = preg_replace("/\[center\](.*)\[\/center\]/isU", "<center>$1</center>", $neuertext);
      $neuertext = preg_replace("/\[b\](.*)\[\/b\]/isU", "<b>$1</b>", $neuertext);
      $neuertext = preg_replace("/\[i\](.*)\[\/i\]/isU", "<i>$1</i>", $neuertext);
      $neuertext = preg_replace("/\[u\](.*)\[\/u\]/isU", "<u>$1</u>", $neuertext);
      $neuertext = eregi_replace("([ \r\n])www\\.([^ ,\r\n]*)","\\1http://www.\\2",$neuertext);
      $neuertext = eregi_replace("([ \r\n])http\:\/\/www\\.([^ ,\r\n]*)","\\1http://www.\\2",$neuertext);
      $neuertext = preg_replace("/\[url\]www.(.*)\[\/url\]/isU", "http://www.$1", $neuertext);
    $neuertext = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/", "<a href=\"\\1\" target='_blank'>\\2</a>", $neuertext);
    $neuertext = preg_replace("/\[url\](.*)\[\/url\]/isU", "<a href='$1' target='_blank'>$1</a>", $neuertext);
    $neuertext = preg_replace("/\[red\](.*)\[\/red\]/isU", "<font color='red'>$1</font>", $neuertext);
    $neuertext = preg_replace("/\[blue\](.*)\[\/blue\]/isU", "<font color='blue'>$1</font>", $neuertext);
    $neuertext = preg_replace("/\[yellow\](.*)\[\/yellow\]/isU", "<font color='yellow'>$1</font>", $neuertext);
    $neuertext = preg_replace("/\[size=(.*)\](.*)\[\/size\]/isU", "<font size='$1'>$2</font>", $neuertext);
    $neuertext = preg_replace("/\[quote\](.*)\[\/quote\]/isU", "<table border='1' cellspacing='0' cellpadding='2' bgcolor='EFEFEF' width='95%' align='center'><tr><td>$1</tr></td></table>", $neuertext);
    $neuertext = preg_replace("/\[quote=(.*)\](.*)\[\/quote\]/isU", "<table border='1' cellspacing='0' cellpadding='2' bgcolor='EFEFEF' width='95%' align='center'><tr><td><i>Orginal von $1:</i><br><br>$2</tr></td></table>", $neuertext);
      }
      return $neuertext;
  } 

$conn_id = mysql_connect($host,$id,$pw);
mysql_select_db($database,$conn_id);

?>

<?php
} else {

        echo "
<table align=\"center\" width=\"540\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\"  bordercolor=\"#000000\">

<tr>
    <td width=\"540\"><font color=\"#FFFFFF\"></font></td>
    </tr></table><p>
";
  $result = mysql_query("select * from $table ORDER BY datum DESC LIMIT 0, 4");

  if ($num = mysql_num_rows($result)) {
    for($i=0;$i < $num; $i++) {
      $titel = mysql_result($result,$i,"titel");
      $autor = mysql_result($result,$i,"autor");
      $bild = mysql_result($result,$i,"bild");
      $datum = mysql_result($result,$i,"datum");
      $text = mysql_result($result,$i,"text");
      $neuertext = bbcodes($text);

echo "
      <table width=\"550\" border=\"0\" bgcolor=\"black\" cellpadding=\"0\" cellspacing=\"1\">
  <!--DWLayoutTable-->
  <tr>
    <td height=\"28\" colspan=\"2\" valign=\"top\"><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
        <!--DWLayoutTable-->
        <tr>
          <td width=\"435\" style=\"background-image:url(images/content_bg.jpg)\" height=\"28\">$titel</td>
          <td width=\"113\" style=\"background-image:url(images/1stmc.jpg)\" valign=\"top\"><!--DWLayoutEmptyCell-->&nbsp;</td>
        </tr>
    </table></td>
  </tr>
  <tr>
    <td height=\"151\" colspan=\"2\" valign=\"top\"><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
      <!--DWLayoutTable-->
      <tr>
        <td width=\"468\" bgcolor=\"#F2F2F2\" rowspan=\"2\" valign=\"top\">$neuertext</td>
        <td width=\"80\" bgcolor=\"#F2F2F2\" height=\"80\"><div align=\"center\"><img src=\"images/$bild.jpg\" width=\"70\" height=\"70\"></div></td>
      </tr>
      <tr>
        <td height=\"71\" bgcolor=\"#F2F2F2\">&nbsp;</td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td width=\"274\" bgcolor=\"#F2F2F2\" height=\"24\">geschrieben von $autor</td>
    <td width=\"273\" bgcolor=\"#F2F2F2\"><div align=\"right\">$datum</div></td>
  </tr>
</table><br>
";
    }
  } else echo "Keine News geschreiben";
}
?>

deine Select Verarbeitung is neu für mich ;)
is ja lustig wenn es auch so geht ^^
 
Zurück