tôi sử dụng jQuery để đếm giá trị của một textarea khi đang bay.Nhận kết quả tương tự cho php 'str_len' như đối với jQuery '.val length() `()
function count_chars() {
count_chars=$('#text_textarea').val().length;
}
... đó trở đi gửi tuần tự hóa biểu mẫu, gửi văn bản của textarea qua ajax tới tệp php, sau đó xác thực văn bản ở phía máy chủ. Tuy nhiên, tôi gặp vấn đề với dòng mới và không gian.
Tất nhiên, nếu tôi chỉ nhận được văn bản "như nó" từ văn bản, php sẽ đếm mỗi dòng mới là hai hoặc 4 ký tự (\n
, ...). Vì vậy, tôi đã cố gắng để thay thế bằng một cái gì đó như thế này:
strlen(str_replace(array("\r", "\n"), ' ', $text)))
hay này:
strlen(preg_replace('/\s+/', ' ', trim($text)))
Tuy nhiên, nếu tôi có ví dụ 10 đoạn văn và jQuery trả về 2500 ký tự, php sẽ trả về 2510 hoặc 2490, tùy thuộc vào việc tôi thay dòng mới bằng dấu cách hay xóa hoàn toàn chúng. Vì vậy, sự khác biệt là 20, nhưng chỉ có 10 dòng mới ...?
Tôi đang thiếu gì? Làm thế nào tôi có thể nhận được php để trả lại kết quả tương tự như jQuery? Đâu là vấn đề, trong php hoặc trong jQuery?
Bạn sử dụng mã hóa ký tự nào? Khách hàng của bạn chạy trên hệ điều hành nào? (Windows sử dụng các kết thúc dòng khác với unix). – Maerlyn
@Maerlyn: tốt, nó sẽ chạy trên một máy chủ web, nơi tôi không có ý tưởng ngay bây giờ thời tiết nó là cửa sổ hoặc Linux, nó chỉ là chia sẻ lưu trữ ... bộ ký tự là utf8, nhưng nó quan trọng ở đây? – Chris
Có thể bạn sẽ phải bình thường hóa nguồn cấp dữ liệu dòng ở cả hai nơi. Tôi không nghĩ rằng bạn có thể kiểm soát những gì trình duyệt chèn theo mặc định khi người dùng nhấn "Return". –