Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php htmlentities to decode textarea

I have a text area and I would like to take the input of the text area and merge it all together. Everything works fine except that it's escaping the quotes. For example test's is outputted as test/'s

To fix this I tried htmlenttries such as,

<?php $inputtext= $_POST['textinput'];
        $encodetext = htmlentities($inputtext);
        $finaltext = html_entity_decode($encodetext);

        echo '<p>'.$finaltext .'</p>';  ?>

This should work according to the html_entity_decode manual (unless I read it wrong which could very likely be the case)

like image 581
Brooke. Avatar asked Sep 11 '25 02:09

Brooke.


2 Answers

The solution is probably for you to strip slashes.

The slashes are automatically added when data comes from POST or GET. This is known as magic quotes and by default are enabled.

You can remove these slashes by using stripslashes()

<?php

$text = $_POST['txtarea']; // from textarea
if(get_magic_quotes_gpc()){
  $text = stripslashes($text);
  // strip off the slashes if they are magically added.
}
$text = htmlentities($text);
// what htmlentities here does is really to convert:
//   & to &amp;
//   " to &#039;
//  and change all < and > to &lt; and &gt; respectively. this will automatically disable html codes in the text.
echo '<pre>'.$text.'</pre>';

?>

See: http://php.net/manual/en/function.stripslashes.php

like image 91
mauris Avatar answered Sep 13 '25 17:09

mauris


You need to use $encodetext = htmlentities ($inputtext, ENT_QUOTES); which will not try to escape the single and double quotes. Look under flags here: htmlentities

like image 35
Beefo Avatar answered Sep 13 '25 16:09

Beefo