Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » BBCodes    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
Obstsalat
Mitglied
Neuling


Dabei seit: 16.06.2013
Herkunft: Österreich
Posts: 6
     BBCodes Zitat | Bearbeiten

Hi, ich hab neulich ein Script programmiert, das euch BBCodes bei Foren, Gästebüchern und sonstigem ermöglichen soll.

Das Script ist recht simpel aufgebaut und dürfte nicht schwer zu verstehen sein

Viel Spaß


Zuerst braucht ihr selbstverständlich ein Formular (beispielsweise bei einem Gästebuch):

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
<!DOCTYPE html>
<html>
<head>
<title>BBCodes</title>
</head>
<body>
<form method="post" action="eintragen.php">
<textarea name="text"></textarea>

<input type="submit" value="Eintragen">
</form>
</body>
</html


Selbstverständlich braucht ihr da noch ein Input-Feld für den Usernamen

Beginnen wir mit dem PHP:

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
<?php 
$text 
htmlentities($_POST['text']); 

if (
$text != ""

$text eregi_replace("\[i\]""<i>"$text); 
$text eregi_replace("\[/i\]""</i>"$text); 

$text eregi_replace("\[b\]""<b>"$text); 
$text eregi_replace("\[/b\]""</b>"$text); 

$text eregi_replace("\[u\]""<u>"$text); 
$text eregi_replace("\[/u\]""</u>"$text); 

$text eregi_replace("\[s\]""<s>"$text); 
$text eregi_replace("\[/s\]""</s>"$text); 

$text eregi_replace("\[tt\]""<tt>"$text); 
$text eregi_replace("\[/tt\]""</tt>"$text); 

$text eregi_replace("\[center\]""<center>"$text); 
$text eregi_replace("\[/center\]""</center>"$text); 

$text eregi_replace("\[quote\]""<blockquote><cite>"$text); 
$text eregi_replace("\[/quote\]""</cite></blockquote>"$text); 

$text eregi_replace(":D""<img src=\"smilie.gif\">"$text); 

//Passt die Codes an euren Bedürfnissen an 

echo $text

//Eintragung speichern 

$handle fopen ("text.txt"a);
fwrite ($handle$text);
fclose ($handle);

echo 
"<br><br><br>Der Wert $text wurde gespeichert ";
echo 
"<br>in der Datei text.txt";

else 

echo 
"Leere Felder z&auml;hlen nicht"

?>


1. Der eingegebene Text wir in der Variable $text gespeichert, alle HTML Tags werden unschädlich gemacht

2. Ist das Formular ausgefüllt passiert Schritt 4

3. Ist das Formular nicht ausgefüllt wird die Speicherung verweigert

4. Das Programm ersetzt die eingegebenen BBCodes durch die entsprechenden HTML Tags (Das Script funktioniert selbstverständlich auch bei Smileys )

5. Der Eintrag wird gespeichert


http://fragfruechtchen.ohost.de - Die Suchmaschine die deinen Datenschutz ernst nimmt, damit auch wirklich NUR du deine Daten in den Händen hältst! Deine persönliche Schmaschine - jetzt mit vielen neuen Features!



Edit: Kalender, Übersetzer und sonstiger SchnickSchnack folgt in Kürze

Post wurde schon 11x editiert, das letzte mal am 19.06.2013 um 15:30 von Obstsalat
17.06.2013, 21:14 Profil | PM | E-Mail  
Obstsalat
Mitglied
Neuling


Dabei seit: 16.06.2013
Herkunft: Österreich
Posts: 6
      Zitat | Bearbeiten

Version 0.1

Ihr dürft das Script gerne verwenden, anpassen und weitergeben

Natürlich gibt es auch eine Online-Demo:
Press me


http://fragfruechtchen.ohost.de - Die Suchmaschine die deinen Datenschutz ernst nimmt, damit auch wirklich NUR du deine Daten in den Händen hältst! Deine persönliche Schmaschine - jetzt mit vielen neuen Features!



Edit: Kalender, Übersetzer und sonstiger SchnickSchnack folgt in Kürze

Post wurde schon 3x editiert, das letzte mal am 19.06.2013 um 16:43 von Obstsalat
17.06.2013, 21:34 Profil | PM | E-Mail  
Ma27
Mitglied
Anfänger


Dabei seit: 01.03.2013
Herkunft: München
Posts: 49
      Zitat | Bearbeiten

eregi_replace ist seit 5.3 veraltet.
Verwende bitte preg_replace


LG Ma27

24.06.2013, 14:43 Profil | PM | E-Mail  
Maya
Mitglied
Aktiver User


Dabei seit: 26.03.2011
Herkunft: Düsseldorf
Posts: 105
      Zitat | Bearbeiten

Pack doch die Konvertierung in eine Funktion, so kann man das gut in eine Applikation integrieren.


25.06.2013, 18:53 Profil | PM | E-Mail  
DingsDaBums
Mitglied
Exzellenter User


Dabei seit: 12.09.2010
Herkunft: keine Angabe
Posts: 2496
      Zitat | Bearbeiten

Bei deiner BBCode Funktion hätte auch ein einfaches str_replace ausgereicht.

Das Problem ist nur dann, dass auch ein nur geöffneter Tag in HTML "übersetzt" wird bzw. ein schließender, zu dem es kein passendes Gegenstück gibt.

Also etwas sauberer fände ich es dann, wenn nur korrekt geschlossene BBCode Tags umgewandelt werden.

Also z.B. so in der Art:
 PHP 
1:
2:
3:
<?php
//Beispiel für Text zu <b>
$text preg_replace('/\[b\](.*)\[\/b\]/Usi''<b>$1</b>'$text);



Und wie schon erwähnt wurde:
Es wäre besser, den Code als eine Funktion oder Objekt anzubieten, als in einem Beispiel Skript. So müsste man nicht, wenn man diesen Code in seinem Projekt verwenden möchte, erst einmal die Teile aus dem Skript zusammen suchen, die man für diese BBCode Funktion benötig.

Wobei hier eine normale Funktion sicher ausreicht. Diese könnte z.B. so aussehen:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<?php
function bbcodeToHtml($text) {
    
// [b] 
    
$text preg_replace('/\[b\](.*)\[\/b\]/Usi''<b>$1</b>'$text);
    
    
// [i]
    
$text preg_replace('/\[i\](.*)\[\/i\]/Usi''<i>$1</i>'$text);
    
    
//usw.    

    
return $text;
}


Wäre auch für dich dann besser für andere Projekte einsetzbar, als dann alles aus einem älterem Skript zusammen suchen zu müssen.
So wäre der Code viel besser wiederverwendbar und man kann ihn besser mit anderen teilen


Schau mal bei meinem Projekt vorbei. Vielleicht ist das ja was für dich MyStartPanel - Deine persönliche Startseite mit deinen Favoriten
Auf der Suche nach einem guten Vokabeltrainer? Vokabeltrainer Cramfire - Schnell und effektiv Vokabeln lernen

Post wurde schon 1x editiert, das letzte mal am 26.06.2013 um 16:50 von DingsDaBums
26.06.2013, 16:50 Profil | PM | E-Mail  
Seiten (1):  1 
PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » BBCodes   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz