[英]Preserving enters in user's input by PHP
您如何保存用户在数据库中提供的“输入”,然后将其显示给其他用户?
我存储用户的问题,并分别使用以下功能清理用户数据,准备数据并执行SQL命令。
pg_escape_string
pg_prepare
pg_execute
我将htmlentities
与ENT_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.