str_replace [SOLVED]

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
User avatar
s.dot
Tranquility In Moderation
Posts: 5001
Joined: Sun Feb 06, 2005 7:18 pm
Location: Indiana

str_replace [SOLVED]

Post 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.
Last edited by s.dot on Fri Jul 29, 2005 11:34 pm, edited 1 time in total.
User avatar
nielsene
DevNet Resident
Posts: 1834
Joined: Fri Aug 16, 2002 8:57 am
Location: Watertown, MA

Post 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.
User avatar
s.dot
Tranquility In Moderation
Posts: 5001
Joined: Sun Feb 06, 2005 7:18 pm
Location: Indiana

Post 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.
User avatar
nielsene
DevNet Resident
Posts: 1834
Joined: Fri Aug 16, 2002 8:57 am
Location: Watertown, MA

Post by nielsene »

That would do it. You were replacing all tags with empty strings :)
Post Reply