Problem mit eregi_replace()

ich hab nun folgendes problem:
alle zeichen die nach dem erkannten link ausgegeben werden, linken noch immer!
ausgabe zB:
das ist cool: http://www.geilehomepage.de
und dieser text, der hier steht, ist nach wie vor ein link

hier das script
PHP:
<?php
$message=$_POST['message'];
if(ereg("(http)(.*)(://)",$message))
{
$message = eregi_replace("(http)(.*)(://)(www.)(.*)(.)(.*)","<a href=\"\\1\\2\\3\\4\\5\\6\\7\" target=\"_blank\">\\1\\2\\3\\4\\5\\6\\7</a>",$message);
}
$message=nl2br($message);
echo $message;
?>
 
Dann solltest du einen korrekten regulären Ausdruck benutzen:
PHP:
<?php


	$url_patterns = array(
		// @link	http://internet.ls-la.net/folklore/url-regexpr.html
		'http'		=> "(?:https?://(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?)(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*))*)(?:\?(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*))?)?)",
		'ftp'		=> "(?:ftp://(?:(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&=])*)(?::(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&=])*))?@)?(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?))(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&=])*))*)(?:;type=[AIDaid])?)?)",
		'mailto'	=> "(?:mailto:(?:(?:[a-zA-Z\d$\-_.+!*'(),;/?:@&=]|(?:%[a-fA-F\d]{2}))+))"
	);

	$string = 'ich hab nun folgendes problem:
alle zeichen die nach dem erkannten link ausgegeben werden, linken noch immer!
ausgabe zB:
das ist cool: http://www.geilehomepage.de
und dieser text, der hier steht, ist nach wie vor ein link';
	$pattern = '/(' . addcslashes($url_patterns['http'], chr(0x2F)) . '|' . addcslashes($url_patterns['ftp'], chr(0x2F)) . '|' . addcslashes($url_patterns['mailto'], chr(0x2F)) . ')/';
	$string = preg_replace($pattern, '<a href="\\1">\\1</a>', $string);
	echo nl2br($string);

?>
 
Zurück