繁体   English   中英

通过PHP保留输入用户的输入

[英]Preserving enters in user's input by PHP

您如何保存用户在数据库中提供的“输入”,然后将其显示给其他用户?

我存储用户的问题,并分别使用以下功能清理用户数据,准备数据并执行SQL命令。

 pg_escape_string
 pg_prepare
 pg_execute

我将htmlentitiesENT_QUOTES一起使用来转换数据HTML。 此过程以问题\\ n的形式删除所有输入。

我希望有一个与SO中类似的问题系统:仅向用户显示两次换行符。

调用htmlentities() ,请调用nl2br() Web浏览器将忽略普通的换行符,因此您需要将其转换为<br />元素以使其显示。

nl2br —在字符串的所有换行符之前插入HTML换行符

描述

string nl2br ( string $string [, bool $is_xhtml= true ] )
返回在所有换行符之前插入<br /><br>字符串。

例如:

echo nl2br(htmlentities($input));

要只显示双换行符而忽略单换行符,可以改用更复杂的字符串替换函数preg_replace

echo preg_replace('/\n\s*\n/', "<br />\n<br />\n", htmlentities($input));

这里的'/\\n\\s*\\n/'匹配一个换行符,后面跟任意数量的空格,再跟另一个换行符。 它用两个<br />元素替换任何此类子字符串。 单个换行符将被忽略。 这也很好,因为它将忽略不可见的多余空格和制表符,例如用户键入以下内容:

这是一个段落。 \\n
很短。 \\n
<space><tab>\\n
这是另一段。 \\n
它也很短。

PHP的nl2br()函数应该可以解决问题,并允许您将\\ n字符转换为<br> html标记。

要启用“两次输入换行符”行为,您应该运行一个正则表达式将每对连续的<br>标记转换为单个<br>标记(也可以在运行nl2br()之前使用\\ n字符来完成此操作)文本)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM