我有一个文本区域,我想接受文本区域的输入并将它们合并在一起。一切正常,但它正在逃避报价。例如,test's
输出为test/'s
为了解决这个问题,我尝试了很多例如
<?php $inputtext= $_POST['textinput'];
$encodetext = htmlentities($inputtext);
$finaltext = html_entity_decode($encodetext);
echo '<p>'.$finaltext .'</p>'; ?>
这应该符合html_entity_decode手册(除非我读错了,很可能就是这种情况)
答案 0 :(得分:6)
解决方案可能是你要删除斜线。
数据来自POST或GET时会自动添加斜杠。这被称为魔术引号,默认情况下已启用。
您可以使用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 &
// " to '
// and change all < and > to < and > respectively. this will automatically disable html codes in the text.
echo '<pre>'.$text.'</pre>';
?>
答案 1 :(得分:2)
你需要使用$encodetext = htmlentities ($inputtext, ENT_QUOTES);
,它不会试图逃避单引号和双引号。在这里查看标志:htmlentities
答案 2 :(得分:1)
确保您在调用htmlentities
和html_entity_decode
时没有传递第二个参数。如果你这样做,他们将以不同的方式逃避/取消引用。查看htmlentities
和html_entity_decode
文档中$quote_style
参数的说明。