在PHP和MySQL中插入和显示特殊字符

时间:2014-03-21 03:10:50

标签: php html mysql escaping

我正在创建小型消息传递模块,我正在尝试准确存储他们输入的数据。

目前我从输入中删除HTML标记,并添加htmlentities以转义特殊字符...

$message = strip_tags($_POST['input']);
$message = htmlentities($message, ENT_QUOTES);
$message = $Database->escape($message);

转义只是mysqli_real_escape_string

然后我使用以下内容然后再尝试解析并显示数据......

$message = str_replace('\r\n', '<br>', $message); 
$message = str_replace('\n', '<br>', $message); 
$message = str_replace('\r', '<br>', $message); 

我在尝试显示\(反斜杠)时遇到问题,因为它显示了两个而不是一个(即使写了一个)

2 个答案:

答案 0 :(得分:0)

在转义序列周围使用双引号"字符而不是单引号'字符。

$message = str_replace("\r\n", '<br>', $message); 
$message = str_replace("\n", '<br>', $message); 
$message = str_replace("\r", '<br>', $message);

在PHP中,当用双引号括起来时,文字字符串的解释会有所不同。

引用PHP manual page on Strings

  

与双引号和heredoc语法,变量和转义不同   特殊字符的序列在发生时不会被扩展   用单引号字符串。

因此echo '\n'将输出反斜杠,然后输出 n ,而echo "\n"将输出一个Unix换行符。

答案 1 :(得分:0)

每当我想显示使用htmlentities转换的特殊字符时,我都会使用html_entity_decode

尝试:

$message = html_entity_decode($message);