8

jQuery を使用して、その場でテキストエリアの値をカウントします。

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

...次に、送信時にフォームをシリアル化し、テキストエリアのテキストを ajax 経由で php ファイルに送信し、サーバー側でテキストを検証します。ただし、改行とスペースに問題がありました。

もちろん、テキストエリアから「そのまま」テキストを取得すると、php は各改行を 2 文字または 4 文字 ( \n, ...) としてカウントします。だから私はそれらを次のようなものに置き換えようとしました:

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

またはこれ:

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

ただし、たとえば 10 個の段落があり、jQuery が 2500 文字を返す場合、改行をスペースに置き換えるか完全に削除するかによって、php は 2510 または 2490 を返します。だから差は20なのに改行は10しかない…?

私は何が欠けていますか?jQueryと同じ結果を返すようにphpを取得するにはどうすればよいですか? 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 に答える