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

标签 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); 

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

最佳答案

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

$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 :

Unlike the double-quoted and heredoc syntaxes, variables and escape sequences for special characters will not be expanded when they occur in single quoted strings.

因此 echo '\n' 将输出一个反斜杠,后跟 n,而 echo "\n" 将输出一个 Unix 行-提要字符。

关于php - 在 PHP 和 MySQL 中插入和显示特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22549428/

相关文章:

php - 无法包含文件并收到 "failed to open stream: No such file or directory"警告消息

html - 具有多种颜色的CSS自定义形状按钮

php - 我如何从 mysql 查询创建这个数组?

mysql - 无法设置与 MySQL 工作台的连接

javascript - 单击按钮后更新数据库(这可能看起来很简单,但它不起作用,请继续阅读)

php - 更新到 MacOS Mojave 后无法使用 PHPIZE

php - 如何将额外的数据字段添加到ajax表中的数据库中

html - Css 变换 : Scale Only Works in Dev Tools

Angular 6 子路由不起作用

mysql - 可以通过事件记录中关联的计数来排序吗?