【问题标题】:jquery html() losing spacesjquery html() 丢失空格
【发布时间】: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 ~!@#$%^&amp;*()-+={}|[]:;&lt;            &gt;?    &quot;...,&#039;/...

分别。但是,当我将其中任何一个放入 $("#div").html(data) 时,我得到:

pr eg123 ~!@#$%^&*()-+={}|[]:;< >? "...,'/...

因此丢失了多个空格。为什么 .html() 函数会减少空格?我该如何解决这个问题?谢谢

【问题讨论】:

  • 因为 HTML 就是这样工作的...要实际显示这些空格,请使用 &amp;nbsp;
  • 这个链接可能对stackoverflow.com/questions/433493/…有帮助
  • 链接有点帮助。它提供了使用“pre”标签的想法,但不确定我如何在这里应用它。这将是用户提交的文本。
  • 使用 &lt;pre&gt; 标签或 css white-space 似乎是保留空格的唯一方法。作为旁注,您的 preg_replace 可以缩短:preg_replace('/[^]!-[\^a-~\s]+/', '', $string);

标签: php jquery preg-replace


【解决方案1】:

从正则表达式中删除“\s+”,然后重试

“我正在努力确保所有这些字符都不会被替换。”你是认真的吗?

所以我做了如下测试:

    $string = "~!@#$%^&*()-+={}|[]:;<            >?";
// $string = preg_replace('/[^a-zA-Z0-9]/', '', $string);

echo "'", $string, "'";

输出是

'~!@#$%^&*()-+={}|[]:;< >?'

如果你想在 $string 中保留 "" 之间的整个空格,我可以说没办法,如果你想输出与输入相同的空格:有两种方法可以做到这一点:

1> 使用

 标记 
2> 使用  替换空格

你想要这些吗?如果你想保留所有?为什么要使用正则?

【讨论】:

  • 删除它会导致所有空格丢失。
猜你喜欢
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
相关资源
最近更新 更多