problem mit smilies und urls etc umwandeln

Rios

Erfahrenes Mitglied
Also hoffentlich könnt ihr mir helfen.
Hab folgende 2 Funktionen:

PHP:
function smilies($posting)
{
$posting=str_replace(":grr:","<image src='images/angryfire.gif' border='0'>",$posting);
$posting=str_replace(":cool:","<image src='images/cool.gif' border='0'>",$posting);
$posting=str_replace(":mhh:","<image src='images/duarmer.gif' border='0'>",$posting);
$posting=str_replace(":lol:","<image src='images/lol.gif' border='0'>",$posting);
return $posting;
}



function format_message($post) {

   

   $post= addslashes($post);
   $post= stripslashes($post);
   $post= htmlspecialchars($post);
   $post= trim($post);


   // URLS in HRC umwandeln:
   $post=eregi_replace("([ \r\n])[ url]http://[ /url]([^ ,\r\n]*)","\\1[ url]http://\\2[ /url]",$post);
   $post=eregi_replace("([ \r\n])[ url]https://[ /url]([^ ,\r\n]*)","\\1[ url]https://\\2[ /url]",$post);
   $post=eregi_replace("([ \r\n])[ url]ftp://[ /url]([^ ,\r\n]*)","\\1[ url]ftp://\\2[ /url]",$post);
   $post=eregi_replace("([ \r\n])www\\.([^ ,\r\n]*)","\\1[ url]http://www.\\2[ /url]",$post);

   $post=eregi_replace("^[ url]http://[ /url]([^ ,\r\n]*)","[ url]http://\\1[ /url]",$post);
   $post=eregi_replace("^[ url]https://[ /url]([^ ,\r\n]*)","[ url]https://\\1[ /url]",$post);
   $post=eregi_replace("^[ url]ftp://[ /url]([^ ,\r\n]*)","[ url]ftp://\\1[ /url]",$post);
   $post=eregi_replace("^www\\.([^ ,\r\n]*)","[ url]http://www.\\1[ /url]",$post);


   // ######### HRC Codes:
   $post = str_replace("[hr]","<hr>",$post);

   $post=preg_replace("/\[b\](.*)\[\/b\]/iUms","<b>\\1</b>",$post);

   $post=preg_replace("/\[i\](.*)\[\/i\]/iUms","<i>\\1</i>",$post);

   $post=preg_replace("/\[s\](.*)\[\/s\]/iUms","<strike>\\1</strike>",$post);

   $post=preg_replace("/\[u\](.*)\[\/u\]/iUms","<u>\\1</u>",$post);

   //email link
   $post=preg_replace("/\[email\](.*)\[\/email\]/msiU", "<a href=\"mailto:\\1\">\\1</a>", $post);

   // [URL]
   $post=preg_replace("/\[url\]www.(.*)\[\/url\]/iUms","<a href=\"http://www.\\1\" target=_blank>[ url]http://www.\\1[ /url]</a>",$post);
   $post=preg_replace("/\[url\](.*)\[\/url\]/iUms","<a href=\"\\1\" target=_blank>\\1</a>",$post);

   // [URL=
   $post=preg_replace("/\[url=(.*)\](.*)\[\/url\]/iUms","<a href=\"\\1\" target=_blank>\\2</a>",$post);

   //code ausrichtung
   $post=preg_replace("/\[code\](.*)\[\/code\]/msiU", "<blockquote><pre><smallfont>code:<hr>\\1<hr></blockquote></pre></smallfont>", $post);

   //quote ausrichtung
   $post=preg_replace("/\[quote\](.*)\[\/quote\]/msiU", "<blockquote><smallfont>quote:<hr>\\1<hr></blockquote></smallfont>", $post);

   //pic anzeigen
   $post=preg_replace("/\[img\](.*)\[\/img\]/iUms","<center><img src=\"\\1\" alt=\"bild\"></center>",$post);

   // Farbiger Text
   $post=preg_replace("/\[green\](.*)\[\/green\]/iUms","<span style=\"color:green\">\\1</span>",$post);
   $post=preg_replace("/\[red\](.*)\[\/red\]/iUms","<span style=\"color:red\">\\1</span>",$post);
   $post=preg_replace("/\[blue\](.*)\[\/blue\]/iUms","<span style=\"color:blue\">\\1</span>",$post);
   $post=preg_replace("/\[white\](.*)\[\/white\]/iUms","<span style=\"color:white\">\\1</span>",$post);

   // sub, sup
   $post=preg_replace("/\[sub\](.*)\[\/sub\]/iUms","<sub>\\1</sub>",$post);
   $post=preg_replace("/\[sup\](.*)\[\/sup\]/iUms","<sup>\\1</sup>",$post);

   // ########## Ende HRC Codes

   $post= nl2br($post);
   return $post;
}
wenn ich jetzt vor dem query zum eintrag ins gb folgendes mache:
$_POST['message']=smilies($_POST['message']); //in $_POST['message'] steht der gb eintrag drin
$_POST['message']=format_message($_POST['message']);
dann geht der insert query nicht.

Die funktionen funktionieren aber. Wenn ich z.b.
$test=":grr:";
$test=smilies($test);
echo $test;

bzw
$test1="www.xyz.de";
$test1=format_message($test1);
echo $test1;

zum test ausführe dann wird das korrekt umgewandelt, nur in die datenbank eintragen will er das nicht. Woran könnte das liegen?
 
vielleicht haben die sich wieder selbst ins knie geschossen und das geht bei ner query so nicht, möglich ist alles. also vor der query vielleicht mal $message = $_POST["message"]; machen, dann hast du das in einer "normalen" var
 
oh mann

ich hab natürlich gedacht, der fehler muss bei mir selber liegen, wie so meistens :-)
jetzt hab ich folgendes getestet:

PHP:
$message="ich alter rul0r :grr: :lol: geh auf www.affe.de du hure fuck u";
$message=format_message($message);
$message=delboeseworte($message);

$sql="insert into test (id, message) values ('', '".$message."')";  
$result=mysql_query($sql);

$sql1="select * from test";
$result1=mysql_query($sql1);
$anzresult1=mysql_num_rows($result1);

for ($i;$i<$anzresult1;$i++)
{
$rowresult=mysql_fetch_array($result1);

echo $rowresult['message']."<br>";

und da geht der query und die anzeige.
Nur in meinem gb script hauts immer noch nicht hin.
Schaue später nochmal, muss jetzt los leider
 
argh

also so langsam regts mich auf, vielleicht war ich ja gestern abend zu müde :-) aber meine gästebuch ausgabe is irgendwie vogel wild, stimmt irgenwas mit der funktion nicht?
Wenn ich die mit ner test php datei auf nen string teste funktionierts, nur bein nem datenbank eintrag gibt der manchmal zb solchen html code aus:

hi ich bin ein test <image src="images//cool.gif">
<b>hallo</b> <h3>welt</h3>
<a href="http://www.<br>test.de"><u>http://www.test.de</u></a><br><br>

eigentlich hatte ich nach dem "hi" und nach dem "<img src..." ein return gesetzt, ausserdem hats den link zerschossen und den h3 tag hatte ich eigentlich mit strip_tags entfernt.
Woran liegt das?

PHP:
$smilies_ort = "images/";

$smilies_ubb_array = array(
	":grr:","angryfire.gif",
	":prost:","beer.gif",
	":confused:","confused.gif",
	":cool:","cool.gif",
	":dj:","dj.gif",
	":mhh:","duarmer.gif",
	":crazy:","durchgedreht.gif",
	":king:","king.gif",
	":kippe:","kippe.gif",
	":hehe:","lach.gif",
	":lol:","lol.gif",
	":mad:","mad.gif",
	":talk:","talk.gif",
	";)","zwinker.gif",
	":)",").gif",

	);

function format_message_hb($post)
{
	  global $smilies_ubb_array, $smilies_ort;
   $post= addslashes($post);
   $post= stripslashes($post);
   //$post= htmlspecialchars($post);
   $post= trim($post);


//Smileys:
   $smilie_rep_count = 0;
   while($smilies_ubb_array[$smilie_rep_count]!="")
   {
   	$smilie_rep_count2 = $smilie_rep_count + 1;
   	$post = str_replace("$smilies_ubb_array[$smilie_rep_count]","<image src=\"$smilies_ort/$smilies_ubb_array[$smilie_rep_count2]\">",$post);
   	$smilie_rep_count+=2;
   }
   //urls
$pattern = '#(^|[^\"=]{1})([url]http://|[url]ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm';
  return preg_replace($pattern,"\\1<a href=\"\\2\\3\"><u>\\2\\3</u></a>\\4",$post);
 
  $post= nl2br($post); //umbrüche
  $post=strip_tags($post,'<b><br>'); //html tags 
   
	return $post;
}
 
Zurück