我正在创建小型消息传递模块,我正在尝试准确存储他们输入的数据。
目前我从输入中删除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);
我在尝试显示\
(反斜杠)时遇到问题,因为它显示了两个而不是一个(即使写了一个)
答案 0 :(得分:0)
在转义序列周围使用双引号"
字符而不是单引号'
字符。
$message = str_replace("\r\n", '<br>', $message);
$message = str_replace("\n", '<br>', $message);
$message = str_replace("\r", '<br>', $message);
在PHP中,当用双引号括起来时,文字字符串的解释会有所不同。
与双引号和heredoc语法,变量和转义不同 特殊字符的序列在发生时不会被扩展 用单引号字符串。
因此echo '\n'
将输出反斜杠,然后输出 n ,而echo "\n"
将输出一个Unix换行符。
答案 1 :(得分:0)