Archiv verlassen und diese Seite im Standarddesign anzeigen : BBCode Zitat
DER*PATE 03-06-2004, 13:50 Hi ich baue gerade an meinem BBCode und hab einbishen Probleme mit der Zitat funktion.
Wenn ich ein ein Zitat habe und ich mache noch ein Zitat in das erste Zitat, dann geht das nicht.
Hier mein Code:
$string = preg_replace("#\[ quote\](.+?)\[/ quote\]#is", "<blockquote><hr><b>Zitat von :</b><br>\\1<hr></blockquote>", $string);
Weiß einer wie ich es hinkriege das ich mehrere Zitate in ein Zitat bekomme.
Oder weiß einer wie man die Zitate mit Tabellen hinbekommt?
merke gerade das das Forum meinen String verarbeitet
$string = preg_replace("#\[quote\](.+?)\[/quote\]#is", "<blockquote><hr><b>Zitat von :</b><br>\\1<hr></blockquote>", $string);
Dann aber ohne das ? hinter dem quantifier...
DER*PATE 03-06-2004, 14:25 ne geht auch nicht
DER*PATE 03-06-2004, 14:43 danke für die Hilfe hab mir gerade selber geholfen, hier ist meine Lösung mit Tabelle: :D
$string = eregi_replace("\[quote\]", "<center><table cellpadding=4 cellspacing=1 width=\"98%\" bgcolor=\"000000\"><tr><td bgcolor=\"C3CAD4\"><i>Zitat von :</i><br>", $string);
$string = eregi_replace("\[\/quote\]", "</td></tr></table></center>", $string);
hat den nachteil, wenn man den endtag vergisst, hast du ein problem...
dann doch lieber rekursiv oder normale schleife, bis preg_replace() false zurück gibt.
DER*PATE 03-06-2004, 14:55 ja hast recht
jetzt hab ich das so gemacht, aber ich hab wieder das problem das ein zitat in einem zitat nicht richtig verarbeitet wird
$string = preg_replace("#\[quote\](.+)\[/quote\]#is", "<center><table cellpadding=4 cellspacing=1 width=\"98%\" bgcolor=\"000000\"><tr><td bgcolor=\"C3CAD4\"><i>Zitat von :</i><br>\\1</td></tr></table></center>", $string);
hast du mein komplettes post durchgelesen???
DER*PATE 03-06-2004, 15:16 Original geschrieben von TobiaZ
dann doch lieber rekursiv oder normale schleife, bis preg_replace() false zurück gibt.
ja hab ich
kenn rekursiv nicht
dann nimm ne while()-schleife ;)
DER*PATE 04-06-2004, 14:03 hab mit arrays noch nicht gearbeitet, könntest du mir einen ansatz zeigen wie es aussehn müsste
bzw. einen link schicken
Hi
In solchen Situationen verweis ich immer gerne auf das Handbuch unter folgender Adresse:
http://www.php.net/manual/de/
Es kommt einem ziemlich viel vor ist allerdings sehr nützlich
Viel Erfolg
Pat-ro
Die genaue Adresse um zu lernen wie man mit Arrays umgehen muss ist folgende: http://www.php.net/manual/de/ref.array.php
hab mit arrays noch nicht gearbeitet Schade, denn das gehört eigentlich zu den absoluten GRUNDLAGEN!!! :mad:
Aber das kann dir auch eigentlich ganz egal sein, denn Arrays haben absolut NULL mit der while()-Schleife zu tun.
DER*PATE 04-06-2004, 15:58 Original geschrieben von TobiaZ
Schade, denn das gehört eigentlich zu den absoluten GRUNDLAGEN!!! :mad:
Aber das kann dir auch eigentlich ganz egal sein, denn Arrays haben absolut NULL mit der while()-Schleife zu tun.
das weiß ich, das die nichts mit while schleifen zutun haben, aber du hast einpaar posts weiter oben geschrieben, das man das mit array wieder schließen kann, falls einer das nicht macht
du bist aber sicher, dass du im richtigen thread bist??? :goth: :D
DER*PATE 06-06-2004, 22:56 Original geschrieben von TobiaZ
dann nimm ne while()-schleife ;)
sry hab in der letzen zeit das script vernachlässigt und konnte nichts posten.
also ich hab eine datein (func_bbcode.php)
diese wird per require in der news.php abgefragt
und dann kommt die while schleife, mit der die ganzen Spalten ausgeben werden.
Und wie soll ich das jetzt mit einer while schleife machen?
sry ich kann es leide nicht besser erklähren
hö???
aber wenn du dir mal überlegst, was while auf deutsch heißt, und was die schleife macht, vorallem wie lange, dann sollte das doch klar gehen...
DER*PATE 06-06-2004, 23:16 (while heißt solange :D)
ne eben nicht, ich bin dabei php zu lernen und brauche immer ziemlich viele schubser bis ich auf etwas komme
Genau, while heißt solange also überleg dir folgenden satz
"Solange [ quote] noch in dem String vorhanden ist:
Parse den String mit dem Regulären außdruck der immern nur das äußterste [ quote]-[/quote]-Paar ersetzt"
Okay, den satz in code umgeschreiben, und du bist fertig
DER*PATE 07-06-2004, 13:13 schei** das ist zu hoch für mich, grübel schon eine halbe stunde über euren Posts und komm nicht weiter
:motz: :nervkopf: :goth:
"Solange [ quote] noch in dem String vorhanden ist:
Parse den String mit dem Regulären außdruck der immern nur das äußterste [ quote]-[ /quote]-Paar ersetzt"
du brauchst das doch nur 1:1 umzusetzen.
DER*PATE 07-06-2004, 17:53 ja und da ist mein problem, ich verstehe z.bspl nicht was parsen ....
ich glaub ich lass es einfach so wie es ist, kann doch nciht angehen, das ich einen tag an dem schei* sitze und noch immer nicht weiß wie ich es machen soll
Mit parsen war die preg_replace funktion gemeint.
ich verstehe z.bspl nicht was parsen .... den String
ich glaub ich lass es einfach so wie es ist, kann doch nciht angehen, das ich einen tag an dem schei* sitze und noch immer nicht weiß wie ich es machen soll sehr erfolgversprechend.
DER*PATE 07-06-2004, 18:38 Original geschrieben von Tartax
Mit parsen war die preg_replace funktion gemeint.
ja das hab ich mir auch gedacht, hab es also verstanden, ich hab es ja auch damit gemacht: $string = preg_replace("#\[q uote\](.+?)\[/ quote\]#is", "<center><table cellpadding=4 cellspacing=1 width=\"98%\" bgcolor=\"000000\"><tr><td bgcolor=\"C3CAD4\"><i>Zitat von :</i><br>\\1</td></tr></table></center>", $string);
und wie soll ich jetzt machen, das wenn [ quote] gesetz ist, das [/ quote] automatisch zum schluß gesetzt wird, falls es noch nicht gesetzt ist
sehr erfolgversprechend.
ja was soll ich machen noch länger dransitzen und weiter nichts verstehen
Original geschrieben von DER*PATE
und wie soll ich jetzt machen, das wenn [ quote] gesetz ist, das [/ quote] automatisch zum schluß gesetzt wird, falls es noch nicht gesetzt ist
Gernicht, mir schebte da ehr ein
while(strpos("[quote]",$string)!=FALSE)
{
$string = preg_replace("#[q uote](.+?)[/ quote]#is", "<center><table cellpadding=4 cellspacing=1 width=\"98%\" bgcolor=\"000000\"><tr><td bgcolor=\"C3CAD4\"><i>Zitat von :</i><br>\1</td></tr></table></center>", $string);
}vor
DER*PATE 08-06-2004, 14:21 function parse_text($string)
{
$string = preg_replace("#\[ quote\](.+?)\[/ quote\]#is", "<center><table cellpadding=4 cellspacing=1 width=\"98%\" bgcolor=\"000000\"><tr><td bgcolor=\"C3CAD4\"><i>Zitat von :</i><br>\\1</td></tr></table></center>", $string);
while(strpos("[ quote]",$string)!=FALSE)
{
$string = preg_replace("#[ quote](.+?)[/ quote]#is", "<center><table cellpadding=4 cellspacing=1 width=\"98%\" bgcolor=\"000000\"><tr><td bgcolor=\"C3CAD4\"><i>Zitat von :</i><br>1</td></tr></table></center>", $string);
}
return $string;
}
hab es jetzt so gemacht, kann damit aber nicht ein Zitat in ein Zitat schreiben
Das Preg_replace vor der schleufe kannst du rausnehmen, wenn die bedingung der Schleife okay ist bauchst du das nicht?
Hast du mal geschaut ob die schleife übehaupt durchlaufen wird?? Ob die Bedingung stimmt?
DER*PATE 08-06-2004, 20:19 ohne Preg_replace
geht es nicht
Hast du mal geschaut ob die schleife übehaupt durchlaufen wird?? Ob die Bedingung stimmt?
würdest du so nett sein und mir sagen wie ich es überprüfen kann, ich weiß ja schon das es nicht geht,
Original geschrieben von DER*PATE
ohne Preg_replace
geht es nicht
Wenn die Bedingund stimmt schon
[QUOTE]Original geschrieben von DER*PATE
[B]würdest du so nett sein und mir sagen wie ich es überprüfen kann
Nadürlich bin ich so nett: Mit einer testausgabe, z.b.
in die While-schreife zusätzlich schreiben:
echo "Schleife durchlaufen<br />\n";
Du könntest auch mal ne Ausgabe in ein If block mit der selben Bedingung schreiben um herauszufinden ob die Bedingung strpos("[ quote]",$string)!=FALSE richtig ist.
Wobei mir grad aufällt, dass es strpos(haystack, needle) heißt, also:
strpos($string, "[quote]")!=FALSE richtig wäre!!!
DER*PATE 09-06-2004, 00:35 tatrax danke für deine gedult
aber er macht hier schon nicht weiter
while(strpos($string,"[quote]")!=FALSE)
{
...
}
Ja, was soll ich jetzt sagen??
Lass dir den string ausgeben und schau ob wirklich kein [quote] drinne is, wenn doch, schau ob strpos richtig angewendet ist, wenn ja, dann versuchs mal mit strstr()
|
-
- |