Quote-Funktion mit Zeilenumbrüchen

Gangsterneo

Mitglied
Hallo liebe Community,

ich habe mir für mein Newsscript ein Textreplace (Bold,Url, img) Funktion gebastelt. Nun wollt ich noch eine Quote Funktion hinzufügen. Das klappt bei einzeiligen Quotes auch super. Aber mehrzeilige Quotes wollen bei mir nicht funktionieren. Was muss ich noch hinzufügen damit das funktionier?

PHP:
function replacescript( $repl )
{
	$repl = preg_replace('/\[quote=([^ ]+).*\](.*)\[\/quote\]/', '<table width="450" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td bgcolor="#666666"><strong>Quote: </strong> $1</td></tr><tr><td bgcolor="#454545"><em>$2</em></td></tr></table>', $repl);

    return $repl;
}

Mit freundlichen Grüßen,
Gangstaaa
 
Das kann aber auch nicht der Fehler sein. Denn ich benutze später unten bei dem Text ja:

PHP:
			$text1 = replacescript(nl2br($row['news']));
    			$text2 = str_replace($search, $replace, $text1 );

Also theoretisch müßten da ja die nl2br schon enthalten sein.
Ich glaube bei dem ersten Teil des Scriptest stimmt vll. irgendetwas nicht :/


Momentan sieht die ausgabe mit dem Quote so aus:
siehe erste News auf: http://www.fortiZ.de


kann es sein, dass
PHP:
 $repl = preg_replace('/\[quote=([^ ]+).*\](.*)\[\/quote\]/', '<table width="450" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td bgcolor="#666666"><strong>Quote: </strong> $1</td></tr><tr><td bgcolor="#454545"><em>$2</em></td></tr></table>', $repl);
nur eine Zeile unter die Lupe nimmt?

Es sieht so aus als würde er das [/quøte] ein paar Zeilen darunter nicht erkennen.
 
Zuletzt bearbeitet:
Versuchs mal mit dem Modifier s:
PHP:
preg_replace('/\[quote=([^ ]+).*\](.*)\[\/quote\]/s', '<table width="450" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td bgcolor="#666666"><strong>Quote: </strong> $1</td></tr><tr><td bgcolor="#454545"><em>$2</em></td></tr></table>', $repl);
Damit trifft der Punkt in deinem RegEx auch auf Zeilenumbrüche zu!
 
Ok habs jetzt fast!

PHP:
preg_replace('/\[quote=(.*?)\](.*)\[\/quote\]/s', '<table width="450" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td bgcolor="#666666"><strong>Quote: </strong> $1</td></tr><tr><td bgcolor="#454545"><em>$2</em></td></tr></table>', $bb);

Danke für den Tipp mit /s funktioniert jetzt.

Ich muss nurnoch das Quote ende finden.. wenn ich zwei Quotes im Text habe... nimmt er das letzte [/quøte] und nicht das nächste x_X

das heißt kann nur einmal im Text zitieren
 
Es funktioniert 'fast' perfekt.

PHP:
	$repl = preg_replace('/\[quote=([^ ]+).*\](.*)\[\/quote\]/Uis', '<table width="450" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td bgcolor="#666666"><strong>Quote: </strong> $1 </td></tr><tr><td bgcolor="#454545"><em>$2</em></td></tr></table>', $repl);

nun zeigt er dann z.B. bei
dem Text:
[quøte=wacken.com]
Text
Text
Text
[/quøte]

folgendes an

Quote: w
Text
Text
Text

also es funktioniert.. bis auf das er statt wacken.com nur w anzeigt.
Woran kann das liegen?
 
Zurück