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)
Problemfall escapen [bbcode] [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Problemfall escapen [bbcode]


 
eteran
25-05-2003, 01:18 
 
Das Problem:
Habe ein kleines Forum geschrieben, nun sollen bbcodes aus den einzelnen Beiträgen umgewandelt werden.

Es gibt 2 Möglichkeiten wie der Code aussieht.
1.) Mit einem Parameter
Hallo Welt
2.) Mit zwei Parametern
Hallo Welt

Bei einem Parameter gibt es keine Probleme,
kann verschachtelt werden bis zu einer beliebigen Tiefe.
Auch bei 2 Parametern ohne Verschachtelung treten keine Probleme auf.
Das Problem tritt erst auf wenn 2 oder mehr Codes mit 2 Params verschachtelt werden.

Fehlerhafter Code nach Umwandlung:
Hallo Welt

-> wird zu

<font size="2][color=red]Hallo Welt[/color"></font>

Abschließend noch mein Code zur Umwandlung,
ich vermute ich habe Fehlerhaft escaped allerdings konnte ich das auch nach längerem suchen nicht beheben, da es in der PHP doku und auch sonst nicht zufriedenstellend behandelt wird. Ich hoffe auf eure Hilfe.

<?php

/*************
BB Code
*************/

$res_bb = mysql_db_query("$dbname", "SELECT code, replacement, params FROM inside2_bbcode ORDER BY id");
$num_bb = mysql_num_rows($res_bb);

for ($x=0; $x<$num_bb; $x++) {
$bb_code = mysql_result($res_bb, $x, "code");
$bb_replace = mysql_result($res_bb, $x, "replacement");
$bb_params = mysql_result($res_bb, $x, "params");
if ($bb_params == '1') {
$bb_text = eregi_replace("\\[$bb_code](.*)\\[/$bb_code]", "$bb_replace", $bb_text);
}
if ($bb_params == '2') {
$bb_text = eregi_replace("\\[$bb_code\\=(.*)](.*)\\[/$bb_code]", "$bb_replace", $bb_text);
}
}

?>

 
Titus
26-05-2003, 12:01 
 
benutze preg_replace und den Modifier U (großes U = ungreedy = ungierig), dann macht er den Match so klein wie möglich.
Sonst bekommst du nämlich auch Probleme, wenn der gleiche BB-Tag mehrmals hintereinander im Post vorkommt.

 
eteran
26-05-2003, 23:59 
 
Danke sehr das war die Lösung :)

- -

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