8

我使用 jQuery 即时计算 textarea 的值:

function count_chars () {
    count_chars=$('#text_textarea').val().length;
}

...然后在提交序列化表单时,通过 ajax 将 textarea 的文本发送到 php 文件,然后在服务器端验证文本。但是,我遇到了换行符和空格的问题。

当然,如果我只是从 textarea 中获取文本“原样”,php 会将每个新行计为两个或四个字符(\n,...)。所以我试图用这样的东西替换它们:

strlen(str_replace(array("\r", "\n"), ' ', $text)))

或这个:

strlen(preg_replace('/\s+/', ' ', trim($text)))

但是,如果我得到例如 10 个段落并且 jQuery 返回 2500 个字符,则 php 将返回 2510 或 2490,这取决于我是用空格替换新行还是完全删除它们。所以相差20,但只有10个新行......?

我错过了什么?如何让 php 返回与 jQuery 相同的结果?问题出在哪里,在 php 中还是在 jQuery 中?

4

1 回答 1

3

这应该有效:

strlen(str_replace("\r", '', $text)))

解释:

strlen(str_replace(array("\r", "\n"), ' ', $text)))

在这里,您将 \r 和 \n 替换为空格,因此字符数并没有真正改变。

strlen(preg_replace('/\s+/', ' ', trim($text)))

在这里,您将连续空白减少为单个' '.

于 2012-08-14T10:41:57.427 回答