Подсчет "реальной" длины текста в textarea
1) В БД хранится описание некоторого объекта, размер поля ограничен, предположим, 1000 символов.
2) В форме пытаюсь осуществить предварительную валидацию по длине текста в TEXTAREA с помощью JS (document.form.info.value.length) Переносы строк в Chrome подсчитываются как 1 символ, в IE - как 2 символа. В php-скрипт же (метод POST) передается реальная строка, в которой переносы выглядят как "\r\n" (4 символа). Вопрос: Подскажите новичку, как правильно подсчитать с помощью JS дину текста в textarea, которую получит php-скрипт. Спасибо! |
Цитата:
|
Вот этому значению
document.form.info.value.length можете доверять. Разница в том какие символы какой браузер вставляет чтобы обозначить конец строки. IE вставляет \r\n, а Chrome - только \n. Но эти же символы в php и уйдут. p.s. jQuery метод val() стандартизирует этот разнобой - удаляет \r |
Цитата:
Код echo $_POST['info']; echo "(".strlen(utf8_decode($_POST['info'])).")"; return; Выдает: 1\r\n\r\n(9) Цитата:
|
Цитата:
|
Цитата:
echo strlen("\r\n"); выведет 2 Цитата:
Kolyaj, выше подсказал, что нужно лишнее экранирование убрать. |
Цитата:
|
Цитата:
function slashes(&$el) { if (is_array($el)) foreach($el as $k=>$v) slashes($el[$k]); else $el = stripslashes($el); } if (ini_get('magic_quotes_gpc')) { slashes($_GET); slashes($_POST); slashes($_COOKIE); } |
А ты проверь - включены ли у тебя и выполняется ли
if (ini_get('magic_quotes_gpc'))
{
// этот код
}
потому что я вообще проверяю так:
if (get_magic_quotes_gpc()) {
...
}
Цитата:
w r И получишь: w r если просмотреть исходный код страницы |
В общем, пока организовал такой подсчет, вроде работает:
temptext = $('#tinfo').val();
count = 0;
pos = temptext.indexOf("\n");
while ( pos != -1 ) {
count+=3;
pos = temptext.indexOf("\n",pos+1);
}
document.iform.counter.value= $('#tinfo').val().length + count;
|
Цитата:
|
Цитата:
Всем спасибо! :thanks: |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Character count test</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="Geany 0.18.1.1" />
<style type="text/css">
#report {
white-space: -moz-pre-wrap; /* Mozilla, supported since 1999 */
white-space: -pre-wrap; /* Opera 4 - 6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: pre-wrap; /* CSS3 - Text module (Candidate Recommendation) http://www.w3.org/TR/css3-text/#white-space */
word-wrap: break-word; /* IE 5.5+ */
}
</style>
<script type="text/javascript">
function count_symbols() {
var val = document.getElementById('counter').value,
len = val.replace(/\r\n/g, '\n').length;
document.getElementById('report').
appendChild(document.createTextNode(len + '\n'));
}
</script>
</head>
<body>
<p><textarea id="counter" rows="5" cols="20">это
просто
тест</textarea></p>
<p><button onclick="count_symbols()">Count</button></p>
<p id="report"></p>
</body>
</html>
Какой идиот придумал виндовые переводы строк... |
Цитата:
Хмм... А вот как из Линуксового браузера уйдёт такой текст весьма интересно... |
Цитата:
|
Цитата:
|
Цитата:
|
Кто на что горазд:)
|
Эх, еще бы в BolgenOS реализовали \n\r, для полноты ощущений :)
|
\x00\n, чтобы уж совсем экстремально.
|
Цитата:
А т.к. в компьютере возврат корректки не актуален, то в юниксах решили его убрать. |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 13:24. |