有人可以帮我解决这个问题。
我只是想显示来自用户的消息。消息从textarea到达我的数据库。我的问题是当我输入消息并将其格式化为分段时,它不以该格式显示并将其显示为一个长段。
像这样。要更改文档的整体外观,请选择新的主题元素 在页面布局选项卡上。更改快速中可用的外观 样式库,使用“更改当前快速样式集”命令。 \ r \ n \ r \ n主题库和快速样式库提供 重置命令,以便您始终可以恢复您的外观 将文档记录到当前模板中包含的原始文档。
我尝试使用nl2br()和strip_tags()但仍然没有运气
验证消息中的代码。
// Check for message
if ( !empty ( $_POST['message'])) {
if ( mb_strlen ( $_POST['message'], 'UTF-8') <= 20 ) {
$reg_errors['message'] = 'Your message must be greater than 20 characters';
} else {
$message = mysqli_real_escape_string($dbc, $_POST['message']);
}
} else {
$reg_errors['message'] = 'Message: This field is required.';
}
这是我从db
中选择消息时使用的代码$message= $row['message'];
$message= nl2br(strip_tags($message));
当回显$ message时,它会打印一个如上所示的段落。
答案 0 :(得分:2)
将数据添加到数据库时,您正在进行过多的转义 如果您正在使用预准备语句,只需从代码中删除mysqli_real_escape_string()调用即可 否则你要做两次 - 你必须找到它发生的地方,并从你的代码中删除额外的mysqli_real_escape_string()调用。
答案 1 :(得分:0)
根据我的理解,通过使用mysqli_real_escape_string()
,您将使其转义为反斜杠,因此在事务处理时\r\n
变为\\r\\n
,但是,如果这些已经被转义为Javascript然后你在交易期间最终得到的是\\\\r\\\\n
,它转换回html为
因此,在添加到数据库之前,您可能希望用适当的字符替换它们。这样你就可以从各种内置功能中进行拍照,例如preg_replace()
,strtr()
,str_replace()
......