hilfe bei preg_replace

hups1803

Erfahrenes Mitglied
ich habe folgendes in meiner shoutbox um links als klickbare links zu ersetzten
PHP:
$text = $row['message'];

//Aus http://url wird [ URL]http://url[ /URL]
$urlsuch[]="/([^]_a-z0-9-=\"'\/])((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si";
$urlsuch[]="/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si";

$urlreplace[]="\\1[ URL]\\2\\4[ /URL]";
$urlreplace[]="[ URL]\\1\\3[ /URL]";

//Aus klaus@mustermann.de wird [ EMAIL]klaus@mustermann.de [ /EMAIL]
$emailsuch[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
$emailsuch[]="/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";

$emailreplace[]="\\1[ EMAIL]\\2[ /EMAIL]";

$emailreplace[]="[ EMAIL]\\0[ /EMAIL]";

$text = preg_replace($urlsuch, $urlreplace, $text);
if (strpos($text, "@"))
    {
    $text = preg_replace($emailsuch, $emailreplace, $text);
    }
    
$host  = $_SERVER['HTTP_HOST'];
$uri  = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');	
	
	
$pfad = "/e107_plugins/shoutbox/system/";

//Die URL's werden zu Links
$text = preg_replace("/\[ URL\]www.(.*?)\[\ /URL\]/si", "<a target=\"_blank\" title=\"http://www.\\1\"href=\"http://www.\\1\"><img src=\"http://".$host."".$uri."/system/link.png\" width=\"32\" height=\"32\"></a>", $text);

$text = preg_replace("/\[ URL\](.*?)\[\ /URL\]/si", "<a target=\"_blank\"title=\"http://www.\\1\" href=\"\\1\"><img src=\"http://".$host."".$uri."/system/link.png\" width=\"32\" height=\"32\"></a>", $text);

$text = preg_replace("/\[ URL=www.(.*?)\](.*?)\[\ /URL\]/si", "<a target=\"title=\"http://www.\\1\"_blank\" href=\"http://www.\\1\"><img src=\"http://".$host."".$uri."/system/link.png\" width=\"32\" height=\"32\"></a>", $text);

$text = preg_replace("/\[ URL=(.*?)\](.*?)\[\ /URL\]/si", "<a target=\"_blank\" title=\"http://www.\\1\"href=\"\\1\"><img src=\"http://".$host."".$uri."/system/link.png\" width=\"32\" height=\"32\"></a>", $text);

//E-Mail Adressen werden zu links
$text = preg_replace("/\[ EMAIL\](.*?)\[\ /EMAIL\]/si", "<a title=\"mailto:\\1\"href=\"mailto:\\1\"><img src=\"http://".$host."".$uri."/system/mail.png\" width=\"32\" height=\"32\"></a>", $text);

$text = preg_replace("/\[ EMAIL=(.*?)\](.*?)\[\ /EMAIL\]/si", "<a title=\"mailto:\\1\"href=\"mailto:\\1\"><img src=\"http://".$host."".$uri."/system/mail.png\" width=\"32\" height=\"32\"></a>", $text);

//[ IMG]bild.jpg[ /IMG] wird als Bild angezeigt
$text = preg_replace("/\[ IMG\](.*?)\[\ /IMG\]/si", "<img src=\"\\1\" border=\"0\"style=\"width:32px\">", $text);

das geht alles wunderbar nun habe ich smilis eingebaut

direkt unter den letzten oben genannten code
PHP:
//smily abruf und replace
$sql2 = "SELECT * FROM ".MPREFIX."shoutbox_smilys";
$result2 = mysql_query($sql2);
while($row2 = mysql_fetch_object($result2))
{
  $text = str_replace($row2->coding,"<img src='".$row2->smile."'>", $text);
}
//ende smilys
				$result .= "<li class='shout'><strong>".$row['user']."</strong><br />".$text." <br /><span class=\"date\">".$row['date']."</span></li>";

das geht alles soweit nur leider geht es nicht mehr wenn ich ein link eintrage wenn ich das so in das text feld eingebe

PHP:
http://127.1.1.0/e107/news.php

kommt so ein quatsch dabei raus

PHP:
<a href="http://www.&lt;img src='e107_plugins/shoutbox/smilies/lazycrasy/32 (11).png'&gt;is-e107.de/theme/news.php" title="http://www.http://www.&lt;img src='e107_plugins/shoutbox/smilies/lazycrasy/32 (11).png'&gt;is-e107.de/theme/news.php" target="_blank"><img width="32" height="32" src="http://127.1.1.0/e107/e107_plugins/shoutbox/system/link.png"></a>


er mix das alles

die smilys werden mit kompletten link eingetragen

das heist er wandelt ja den code in
PHP:
<img src='".$row2->smile."'>
um.

das $row2->smile ist in der datenbank so :
PHP:
http://www.hupsis-e107.de/theme/e107_plugins/shoutbox/smilies/lazycrasy/32 (6).png
ich brauche dort den vollen link

nur leider baut er den nun mitten in den href ein ?

ich hoffe ihr habt mein problem verstanden wo oder wie kann ich das ändern ****

die smilys gehen super da hab ich kein problem
 
Zurück