我正在测试一个preg_replace函数,并且我从ajax函数返回已处理的数据(在我通过preg_replace处理数据之后,我将它通过htmlentities()):
我的测试字符串是:
pr eg123 ~!@#$%^&*()-+={}|[]:;< >? "...,'/...
我试图确保所有这些角色都没有被替换。我的替换功能是:
$string = preg_replace('/[^a-zA-Z0-9\s+\n\r,.\/~!@#\$%\^&*()\+={}\[\]|:;<>?\'"-]/', '', $string);
我返回来自&#34; echo&#34;的数据。并经过htmlentities()看到差异。 当我使用alert(数据)返回数据时,我得到:
pr eg123 ~!@#$%^&*()-+={}|[]:;< >? "...,'/...
pr eg123 ~!@#$%^&*()-+={}|[]:;< >? "...,'/...
分别。但是,当我将其中任何一个放入$("#div").html(data)
时,我得到:
pr eg123 ~!@#$%^&*()-+={}|[]:;< >? "...,'/...
所以多个空格丢失了。为什么.html()函数会减少空格?我该如何解决这个问题?感谢
答案 0 :(得分:0)
删除&#34; \ s +&#34;从正则表达式再试一次
&#34;我试图确保所有这些角色都没有被替换。&#34;你的意思是?
所以我做了如下测试:
$string = "~!@#$%^&*()-+={}|[]:;< >?";
// $string = preg_replace('/[^a-zA-Z0-9]/', '', $string);
echo "'", $string, "'";
输出
'~!@#$%^&*()-+={}|[]:;< >?'
如果你想在&#34;&lt;&#34;之间保持整个空白区域和&#34;&gt;&#34;在$ string中,我可以说没有办法,如果你想输出相同的空格,你可以输入:有两种方法可以做到这一点:
1&GT;使用&lt; pre&gt; tage
2 - ;使用&amp; nbsp;替换空格