WinFuture-Forum.de: Frage Zu Bbcode - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Frage Zu Bbcode ersetze den bbcode durch eine Funktion


#1 Mitglied ist offline   Daniel Voigt 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Juli 04
  • Reputation: 0

geschrieben 17. August 2006 - 15:21

Hallo Zusammen,

nach Stundenangen Suchen und Probieren...:

Ich lasse bbcode durch eine preg_replace Funktion bbcode() ersetzen z.B:

$neuertext = preg_replace("/\[mail\](.*)\[\/mail\]/isU", "<a href=\"mailto:$1\">$1</a>", $neuertext);


es funktioniert auch alles supi, bloß das mit dem
[code]
Tag bekomme ich nicht hin...
Ich möchte z.B. zur Erkärung auf meiner Seite den Usern erklären wie z.B. sie den
[YOUTUBE]
Tag benutzen müssen. Dies fällt natürlcih flach, da bis jetzt auch dieser Tag sofort in html umgewandelt wird...

Wie erreiche ich es, dass mit einem
[CODE]
Tag der Innere Teil nichtmehr ersetzt wird?

Ich komme da nicht weiter... vielleicht seh ich auch den Wald vor lauter Bäumen nicht :)
0

Anzeige



#2 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 17. August 2006 - 18:19

$text = htmlentities($text);

wobei in der variable $text dann der quellcode steht, welcher angezeigt statt ausgeführt werden soll.
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#3 Mitglied ist offline   Daniel Voigt 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Juli 04
  • Reputation: 0

geschrieben 17. August 2006 - 20:20

ja aber ich lasse ja über preg_replace nach
 [code] * [ /code]
Suchen und dies dann ersetzen:

$neuertext = preg_replace("/\[code\](.*)\[\/code\]/isU", xxxxx, $neuertext);


bei xxx muss ich ja nun eigentlich das "Eigentliche" reinbekommen...
den TAG der Zwischen [code].. steht ersetzt er dann natürlich trotzdem immer noch..

Vielleicht bin ich auch schon von Anfang an falsch rangegangen... Trotzdem ersteinmal vielen Dank!

Dieser Beitrag wurde von Daniel Voigt bearbeitet: 21. August 2006 - 23:43

0

#4 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 17. August 2006 - 22:19

also ich mach mal nen beispiel, wie ich das verstanden habe. zum beispiel in einem forum gibts einen eintrag, der folgenden string enthält.

$text = '[code]<a href="#">link</a>[/code]';


und wenn man nun nach der enfernung von [code] und [/code] den rest ausgibt, stände da ja nicht der code, sondern ein link würde erzeugt werden. um aber doch den code auszugeben würde ich das so machen:

$text = ereg_replace("\[code\]", "", $text);
$text = ereg_replace("\[/code\]", "", $text);
$text = htmlentities($text);
echo($text);


oder hab ich das immer noch falsch verstanden?
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#5 Mitglied ist offline   Daniel Voigt 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Juli 04
  • Reputation: 0

geschrieben 18. August 2006 - 08:58

Hallo und vielen Dank,

du hast das ansich schon richtig verstanden und mit htmlentities() erreiche ich nun eigentlich auch das was ich brauche, nur eben hänge ich an meiner Funktion fest:

function bbcodes($text) 
  { 
	$neuertext = stripslashes($text);
	$neuertext = preg_replace("/\[code\](.*)\[\/code\]/isU", "$1",$neuertext); 
	$neuertext = preg_replace("/\[img\](.*)\[\/img\]/isU", "<img src=\"$1\" border='0' />", $neuertext);
	$neuertext = preg_replace("/\[img=(.*?)\](.*?)\[\/img\]/", "<div align=\"$1\"><img src=\"$2\" border='0' /></div>", $neuertext);
  }


Wenn ich jetzt also nur nach code suchen lassen würde wäre es kein Problem... Aber Ich lasse ja auch noch img, b, i, u, url tags usw. ersetzen.

Da bringt mir ein
[code][youtube]xxxxxx[/youtube][ /code]
recht wenig, da ja der youtube tag weiter unten noch ersetzt wird... und die Ersetzung einfach nach dem Code-fund abzubrechen ist auch doof, da ja die restlichen Tags dann nicht ersetzt werden...
Gibt es vielleicht eine Möglichkeit in der preg_replace Funktion zu definieren, was nicht ersetzt werden darf?

Dieser Beitrag wurde von Daniel Voigt bearbeitet: 18. August 2006 - 09:00

0

#6 _PelzigesWaldtier_

  • Gruppe: Gäste

geschrieben 18. August 2006 - 17:38

Vielleicht kannst du ja preg_replace_callback verwenden und jedes Mal, wenn du einen öffnenden [code]-Tag findest $is_in_code_tag true setzten und dann, wenn du alle anderen Tags ersetzt, einfach prüfen, ob sie wirklich ersetzt werden dürfen bzw. ob $is_in_code_tag true ist.
0

#7 Mitglied ist offline   Daniel Voigt 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Juli 04
  • Reputation: 0

geschrieben 18. August 2006 - 23:39

Danke!! Ich habe eine Mischung aus beiden gemacht. Ist nun zwar fast ein eigener Parser geworden aber was sollst.
Es kam halt immer mehr dazu wie z.B. [qoute]xxx[qoute]xxx[/qoute][/qoute] aber nun funzt es!

Danke für die Denkanstöße!
:D :)
0

#8 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 21. August 2006 - 20:11

na ich hab bei sowas immer das glück, dass ich nen ganzen monat grübel und 2 millionen schleifen verschachtel und funktionen über funktionen schreibe und wenn das ganze funktioniert und ich es auf 28 seiten angewendet habe, dann fällt mein php-buch aus dem regal und bleibt mit der seite offen liegen, wo der eine einzige lumpige befehl steht, der das mit einmal erledigt, was ich wochenlang programmiert hab.
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#9 Mitglied ist offline   Daniel Voigt 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Juli 04
  • Reputation: 0

geschrieben 21. August 2006 - 23:48

Hehe das kenn ich nur zugut!! Aber hinter dieser Funktion stecken auch wieder tausende von Verschachtelungen die man selbst nicht mehr nachvollziehen kann :wink: .
So kommt man aber zu einem eigenem miniParser und weiß sogar wie er funktioniert ;D
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0