如何保存用户在数据库中提供的“输入”并将其显示给其他用户?
我存储用户的问题,并使用以下函数分别清理用户数据,准备和执行SQL命令。
pg_escape_string
pg_prepare
pg_execute
我使用htmlentities
和ENT_QUOTES
来转换数据HTML。
此过程将删除所有输入,显然是在问题中以\ n的形式。
我希望有一个与SO类似的问题系统:显示只有双重输入用户作为换行符。
答案 0 :(得分:7)
致电htmlentities()
后,请致电nl2br()
。 Web浏览器会忽略纯字符换行符,因此您需要将它们转换为<br />
元素才能显示它们。
中的所有换行符之前插入HTML换行符
nl2br
- 在字符串描述
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
它也很短。
答案 1 :(得分:3)
PHP的nl2br()函数应该可以解决问题,并允许您将\ n字符转换为<br>
html标记。
要启用“两个输入换行符”行为,您应该运行正则表达式将每对连续的<br>
标记转换为单个<br>
标记(您也可以使用\ n来执行此操作在文本上运行nl2br()之前的字符。