eregi script zur erkennung von urls

ra_hoch_drei

Grünschnabel
Hi!!
Alos, wie oben schon steht habe ich ein scrpit erstellt das inner halb von Tags wie z.b [www]asfdsdf[/www] zu einer url macht. Es funzt auch ohne porbs, nur das es bei langen texte, über sagen wir mal 1500 Zeichen, zu lange braucht und mir die feheler meldung zeigt:
Fatal error: Maximum execution time of 30 seconds exceeded in /home/www/htdocs/mfg-mob.de/mfg/_string.php on line 300

So hier mein code:

Code:
for( ; ; )
{

	if(eregi("(.*)(\[url=)(.*)(\])(.*)(\[\/url\])(.*)",$string,$regs))//line 300
	{
	 $url="<a class=text href=http://"."$regs[3]"." target=_blank><b>"."$regs[5]"."</b></a>";
	 $string=$regs[1].$url.$regs[7];
	}
	else
	{
	 break;
	}
}

for( ; ; )
{

	if(eregi("(.*)(\[mailto=)(.*)(\])(.*)(\[\/mailto\])(.*)",$string,$regs))
	{
	 $url="<a class=text href=mailto:"."$regs[3]"." target=_blank><b>"."$regs[5]"."</b></a>";
	 $string=$regs[1].$url.$regs[7];
	}
	else
	{
	 break;
	}
}


for( ; ; )
{
	if(eregi("(.*)(\[www\])(.*)(\[\/www\](.*))",$string,$regs))
	{
	 $url="<a class=text href=http://"."$regs[3]"." target=_blank><b>"."$regs[3]"."</b></a>";
	 $string=$regs[1].$url.$regs[5];
	}
	else
	{
	
	 break;
	}
}

for( ; ; )
{
	if(eregi("(.*)(\[email\])(.*)(\[\/email\](.*))",$string,$regs))
	{
	 $url="<a class=text href=mailto:"."$regs[3]"." target=_blank><b>"."$regs[3]"."</b></a>";
	 $string=$regs[1].$url.$regs[5];
	}
	else
	{
	 break;
	}

}

Ich denke es liegt an den endlos Schleifen, aber ich bin auf noch keine besser idee gekommen.
Hoffentlich könnt ihr mir helfe!
Danke!
 
Zuletzt bearbeitet:
hmm...

ich habe mal eine elegantere version für dich...

habs schnell getippt, sollte aber funzen:

PHP:
$content = preg_replace("/\\[mailto=(.+?)\\](.+?)\\[\\/mailto\\]/is","<a href=\\"mailto:$1\\">$2</a>",$content);

in $content sollte dein text stehen!

EDIT: das man die backslashes doppelt schreiben muss, ist echt lässtig!

greetz Nova
 
Zurück