Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
BBCode Zitat [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




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);

 
TobiaZ
03-06-2004, 14:06 
 
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);

 
TobiaZ
03-06-2004, 14:47 
 
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);

 
TobiaZ
03-06-2004, 15:11 
 
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

 
TobiaZ
03-06-2004, 15:50 
 
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

 
Pat-ro
04-06-2004, 14:49 
 
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

 
TobiaZ
04-06-2004, 15:50 
 
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

 
TobiaZ
04-06-2004, 16:00 
 
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

 
TobiaZ
06-06-2004, 23:12 
 
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

 
Tartax
07-06-2004, 00:04 
 
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:

 
derHund
07-06-2004, 13:19 
 
"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"

 
TobiaZ
07-06-2004, 14:50 
 
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

 
Tartax
07-06-2004, 18:00 
 
Mit parsen war die preg_replace funktion gemeint.

 
TobiaZ
07-06-2004, 18:00 
 
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

 
Tartax
07-06-2004, 18:44 
 
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

 
Tartax
08-06-2004, 19:06 
 
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,

 
Tartax
08-06-2004, 20:58 
 
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)
{
...
}

 
Tartax
09-06-2004, 17:02 
 
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()

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:20 Uhr.