[PHP] eregi_replace Probleme

Pharao2k

Fleet Captain Special
Mitglied seit
16.05.2002
Beiträge
294
Renomée
0
Hiho Leutz,
Ich wollt mir so eine Art eigenen BBCode zusammenbauen und hab daher folgendes zusammengebaut:
PHP:
$string = eregi_replace("(\[internlink:)(.*)(\])(.*)(\[/internlink\])","<a href=\"\\2\">\\4</a>",$string);
$string = eregi_replace("(\[externlink:)(.*)(\])(.*)(\[/externlink\])","<a href=\"\\2\" target=\"_blank\">\\4</a>",$string);
$string = eregi_replace("(\[grafik:)(.*)(\])","<img src=\"\\2\" alt=\"\\2\">",$string);

Info:

Leider hat es nicht so gut funktioniert wie ich eigentlich wollte, denn wenn ich z.B. das so gemacht habe:

Code:
[externlink:[url]http://www.world-of-pc.de/images/chieftec/1879.jpg[/url]]Bild 1[/externlink]
[nl]
[externlink:[url]http://www4.tomshardware.com/howto/20030804/images/extreme_s.jpg[/url]]Bild 2[/externlink]

([nl] erzeugt Zeilenumbruch)

Der Link wurde erzeugt, allerdings hat er nur einen statt 2 Links erzeugt und die daraus folgende Adresse war:
http://www.world-of-pc.de/images/ch...dware.com/howto/20030804/images/extreme_s.jpg

was hab ich falsch gemacht? Ich hab schon versucht das ganze umzustrukturieren aber es kam immer das gleiche Problem zustande, weiss jemand woran das liegt?
 
Tach erstmal

ich kann dir nicht sagen was bei dir falsch ist aber ich hab' mir mal Code aus dem PhpBB 2.x geklaut, weil ich mich mit regulären Ausdrücken nicht auskenne ...
PHP:
function prepare_long_text_preg($text)
	{
	settype($text,"string");
	$text = trim($text);
	$text = htmlentities($text,ENT_QUOTES);
	$text = nl2br($text);

	// Fettdruck
	$text = preg_replace
		(	"#\[b \](.*?)\[/b\]#si",
			"<b>\\1</b>",
			$text
		);
	// Unterstrichen
	$text = preg_replace
		(	"#\[u \](.*?)\[/u\]#si",
			"<u>\\1</u>",
			$text
		);
	// Kursiv
	$text = preg_replace
		(	"#\[i \](.*?)\[/i\]#si",
			"<i>\\1</i>",
			$text
		);
	// Bilder ([IMG]xxxx://abiabi.de/intro.jpg[/IMG])
	$text = preg_replace
		(	"#\[img\]([\w]+?://[^ \"\n\r\t<]*?)\[/img\]#is",
			"<img src=\"\\1\" alt=\"\" border=\"0\" />",
			$text
		);
	// [url]xxxx://abiabi.de/[/url]
	$text = preg_replace
		(	"#\[url\]([\w]+?://[^ \"\n\r\t<]*?)\[/url\]#is",
			"<a href=\"\\1\" target=\"_blank\">\\1</a>",
			$text
		);
	// [url=xxxx://abiabi.de]AbiAbi!!![/url]
	$text = preg_replace
		(	"#\[url=([\w]+?://[^ \"\n\r\t<]*?)\](.*?)\[/url\]#is",
			"<a href=\"\\1\" target=\"_blank\">\\2</a>",
			$text
		);
	return($text);
	} // ende prepare_long_text
da PhpBB unter der GPL steht tut es dieser Code wahrscheinlich auch (ich hab' größtenteils kopiert, nur ein paar kleine änderungen gemacht ...)

[EDIT]
scheiss UBB-Code!
die leerzeichen hinter dem [b, [i und [u musst du wieder wegmachen
ich musste sie reinsetzen da sie sonst als ubb-code interpretiert werden ...
 
Zuletzt bearbeitet:
bei preg_replace ist das leider ne andere Syntax als bei iregi_replace, aber trotzdem danke für die Hilfe ich werd mal schauen ob ich das nich übernehme.
 
naja bei meinem Script ist die Performance nebensächlich und ich hab nu mit Hängen und Würgen grad mal Posix hinbekommen und will nich mich nochmal darin reinversetzen ^^ aber ok scheinbar werd ichs doch wagen müssen ;D
 
Zurück
Oben Unten