【发布时间】:2014-06-06 05:03:32
【问题描述】:
我正在测试 preg_replace 函数,并从 ajax 函数返回处理后的数据(通过 preg_replace 处理数据后,我将其放入 htmlentities() ):
我的测试字符串是:
pr eg123 ~!@#$%^&*()-+={}|[]:;< >? "...,'/...
我正在努力确保所有这些字符都不会被替换。我的替换功能是:
$string = preg_replace('/[^a-zA-Z0-9\s+\n\r,.\/~!@#\$%\^&*()\+={}\[\]|:;<>?\'"-]/', '', $string);
我从“echo”返回数据,然后通过 htmlentities() 查看差异。 当我使用 alert(data) 返回数据时,我得到:
pr eg123 ~!@#$%^&*()-+={}|[]:;< >? "...,'/...
pr eg123 ~!@#$%^&*()-+={}|[]:;< >? "...,'/...
分别。但是,当我将其中任何一个放入 $("#div").html(data) 时,我得到:
pr eg123 ~!@#$%^&*()-+={}|[]:;< >? "...,'/...
因此丢失了多个空格。为什么 .html() 函数会减少空格?我该如何解决这个问题?谢谢
【问题讨论】:
-
因为 HTML 就是这样工作的...要实际显示这些空格,请使用
&nbsp;。 -
这个链接可能对stackoverflow.com/questions/433493/…有帮助
-
链接有点帮助。它提供了使用“pre”标签的想法,但不确定我如何在这里应用它。这将是用户提交的文本。
-
使用
<pre>标签或 csswhite-space似乎是保留空格的唯一方法。作为旁注,您的 preg_replace 可以缩短:preg_replace('/[^]!-[\^a-~\s]+/', '', $string);
标签: php jquery preg-replace