Page 1 of 1

str_replace [SOLVED]

Posted: Fri Jul 29, 2005 10:18 pm
by s.dot
err okay I have no idea why this isn't working

Code: Select all

if($_POST['action'] == "submitblogentry")
{
	if($_COOKIE['username'] != "scrotaye"){ die("blogs will be back up shortly"); }
	if(!$_POST['blogtitle'])
	{
		echo "<p>You didn't supply a title for your blog.  Please use the back button on your browser.</p>"; die();
	}
	if(!$_POST['blogentry'])
	{
		echo "<p>You didn't supply an entry for your blog.  Please use the back button on your browser.</p>"; die();
	}
	$blogtitle2 = mysql_real_escape_string(strip_tags($_POST['blogtitle']));
	$mood2 = mysql_real_escape_string(strip_tags($_POST['mood']));
	$mp32 = mysql_real_escape_string(strip_tags($_POST['mp3']));
	
	$specialtext = array("[b]","[/b]","[u]","[/u]","[i]","[/i]","[img]","[/img]");
	$recplacement = array("<B>","</B>","<U>","</U>","<I>","</I>","<img src=\"","\" alt=\"Blog Image\">");
	$smilies = array(":arrow:",";-D",";-d",";-D",";-d",":-D",":-d",":D",":d",":-S",":-s",":S",":s","B-)","b-)",":((",":-/",":-/","v:)","V:)",":-!",":!","o-)","O-)",":))","X-(","x-(","X(","x(",":-|",":|",":-?",":?",":-P",":-p",":P",":p",":-$",":$","8-|","8|",":-(",":(",":-O",":-o",":O",":o",":-)",":)",":.O",":.o",";-)",";)");
	$smiliesimg = array("<img src=\"smilies/arrow.gif\" alt=\"Smiley\">","<img src=\"smilies/badgrin.gif\" alt=\"Smiley\">","<img src=\"smilies/badgrin.gif\" alt=\"Smiley\">","<img src=\"smilies/badgrin.gif\" alt=\"Smiley\">","<img src=\"smilies/badgrin.gif\" alt=\"Smiley\">","<img src=\"smilies/biggrin.gif\" alt=\"Smiley\">","<img src=\"smilies/biggrin.gif\" alt=\"Smiley\">","<img src=\"smilies/biggrin.gif\" alt=\"Smiley\">","<img src=\"smilies/biggrin.gif\" alt=\"Smiley\">","<img src=\"smilies/confused.gif\" alt=\"Smiley\">","<img src=\"smilies/confused.gif\" alt=\"Smiley\">","<img src=\"smilies/confused.gif\" alt=\"Smiley\">","<img src=\"smilies/confused.gif\" alt=\"Smiley\">","<img src=\"smilies/cool.gif\" alt=\"Smiley\">","<img src=\"smilies/cool.gif\" alt=\"Smiley\">","<img src=\"smilies/cry.gif\" alt=\"Smiley\">","<img src=\"smilies/doubt.gif\" alt=\"Smiley\">","<img src=\"smilies/doubt.gif\" alt=\"Smiley\">","<img src=\"smilies/evil.gif\" alt=\"Smiley\">","<img src=\"smilies/evil.gif\" alt=\"Smiley\">","<img src=\"smilies/exclaim.gif\" alt=\"Smiley\">","<img src=\"smilies/exclaim.gif\" alt=\"Smiley\">","<img src=\"smilies/idea.gif\" alt=\"Smiley\">","<img src=\"smilies/idea.gif\" alt=\"Smiley\">","<img src=\"smilies/lol.gif\" alt=\"Smiley\">","<img src=\"smilies/mad.gif\" alt=\"Smiley\">","<img src=\"smilies/mad.gif\" alt=\"Smiley\">","<img src=\"smilies/mad.gif\" alt=\"Smiley\">","<img src=\"smilies/mad.gif\" alt=\"Smiley\">","<img src=\"smilies/neutral.gif\" alt=\"Smiley\">","<img src=\"smilies/neutral.gif\" alt=\"Smiley\">","<img src=\"smilies/question.gif\" alt=\"Smiley\">","<img src=\"smilies/question.gif\" alt=\"Smiley\">","<img src=\"smilies/razz.gif\" alt=\"Smiley\">","<img src=\"smilies/razz.gif\" alt=\"Smiley\">","<img src=\"smilies/razz.gif\" alt=\"Smiley\">","<img src=\"smilies/razz.gif\" alt=\"Smiley\">","<img src=\"smilies/redface.gif\" alt=\"Smiley\">","<img src=\"smilies/redface.gif\" alt=\"Smiley\">","<img src=\"smilies/rolleyes.gif\" alt=\"Smiley\">","<img src=\"smilies/rolleyes.gif\" alt=\"Smiley\">","<img src=\"smilies/sad.gif\" alt=\"Smiley\">","<img src=\"smilies/sad.gif\" alt=\"Smiley\">","<img src=\"smilies/shock.gif\" alt=\"Smiley\">","<img src=\"smilies/shock.gif\" alt=\"Smiley\">","<img src=\"smilies/shock.gif\" alt=\"Smiley\">","<img src=\"smilies/shock.gif\" alt=\"Smiley\">","<img src=\"smilies/smile.gif\" alt=\"Smiley\">","<img src=\"smilies/smile.gif\" alt=\"Smiley\">","<img src=\"smilies/surprised.gif\" alt=\"Smiley\">","<img src=\"smilies/surprised.gif\" alt=\"Smiley\">","<img src=\"smilies/wink.gif\" alt=\"Smiley\">","<img src=\"smilies/wink.gif\" alt=\"Smiley\">");

	$blogentry2 = str_replace($specialtext,$replacement,$_POST['blogentry']);
	
	// Convert links to hyperlinks
	function make_clickable($text) 
	{ 
   	$ret = ' ' . $text; 
  		$ret = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret); 
   	$ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret); 
   	$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret); 
   	$ret = substr($ret, 1); 
   	return($ret); 
	}
	
	$blogentry3 = mysql_real_escape_string(make_clickable(htmlentities($blogentry2, ENT_QUOTES)));
	$blogentry4 = str_replace($smilies,$smiliesimg,$blogentry3);
	
	$date = date('F jS, Y');
	$time = date('g:i A');
	mysql_query("INSERT INTO blog (username, blogtitle, mood, mp3, blogentry, date, time) VALUES ('$theperson', '$blogtitle2', '$mood2', '$mp32', '$blogentry4', '$date', '$time')");
	header("Location: blogit.php?busername=".$_GET['busername']."&blogged=1");
}
Everything seems to work fine except for the line that replaces $specialtext with $replacement .

For example if I put in [ B ]bold[ /B ] the result is 'bold' without any HTML Markup.

Posted: Fri Jul 29, 2005 11:19 pm
by nielsene
Have you looked at the raw text of blogentry2 and 3.

ie add

Code: Select all

echo "<pre>$blogentry2</pre>";
echo "<pre>".htmlspecialchars($blogentry2)."</pre>";
and again for blogentry3.

I have an unjustified suspicious that the mysql_real_escape might be doing something to the html brackets.

Posted: Fri Jul 29, 2005 11:28 pm
by s.dot
I input

Code: Select all

&#1111; B ] bold &#1111; /B ]
regular
Tried your suggestion:

Code: Select all

echo "<pre>$blogentry2</pre>";
	echo "<pre>".htmlspecialchars($blogentry2)."</pre>";
Result

Code: Select all

bold
regular
Neither one with any kind of HTML markup. Is there something wrong with my $specialtext,$replacement arrays?

Edit: D'oh! I just noticed I spelled replacement wrong in $repclacement. We'll see if that has any effect. :roll:
Edit #2: That was the problem.

Posted: Fri Jul 29, 2005 11:37 pm
by nielsene
That would do it. You were replacing all tags with empty strings :)