保留通过PHP在用户输入进入
-
19-09-2019 - |
题
你怎么能保持“进”通过在数据库中的用户给定的,并告诉他们,然后向其他用户?
余存储用户的问题,并用下面的函数来净化所述用户数据,准备它,并执行SQL命令,分别
pg_escape_string
pg_prepare
pg_execute
我用htmlentities
与ENT_QUOTES
到数据HTML转换。
此过程会删除所有进入时,显然是在形式\ N,在问题。
我想有一个类似的问题的系统,如SO:仅显示双进入到用户以换行
解决方案
在你打电话htmlentities()
,叫nl2br()
。所以你需要将它们转换为<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 />
元素。单换行被忽略。这也是不错的,因为它会忽略多余的空格和制表符是不可见的,例如,如果用户键入此:
这是一个paragraph.
\n
结果 这是很short.\n
结果<space><tab>\n
结果 这里的另一个paragraph.\n
结果 它也很短。
其他提示
PHP的nl2br()函数应该做的伎俩,让你转换\ n个字符到<br>
HTML标签。
要启用“二进一换行”的行为,你应该运行正则表达式来把每对连续<br>
标记成一个单一的<br>
标签(你也可以用\ n个字符做到这一点的运行nl2br()之前文本)。