Задача такова: есть строка $stroka (из формы ввода)
Нужно высветить:
1) кол-во символов;
2) кол-во символов без пробелов;
3) кол-во слов.
При этом необходимо предварительно убрать возможные ошибки посетителей при вводе текста (знак ввода или перевода строки заменить на пробел, пробелы в начале и конце и т.п.)
Сделал так:
$stroka = str_replace(array('\n', '\r', '\t'), ' ', $stroka); //заменяю знаки перевода строки и табуляции в пробел
$stroka = strip_tags(htmlspecialchars_decode(trim($beg_stroka))); //удаляю пробел в начале и конце строки, и спец.символы, для безопасности
$stroka = preg_replace('/ {2,}/',' ',$stroka); //удаляю лишние пробелы в тексте
echo "$stroka"; //Сама строка
$kolSimvolov = iconv_strlen($stroka, 'UTF-8');
echo "<br/><br/>Количество символов: ".$kolSimvolov;
$kolSimvBezProb = iconv_strlen(preg_replace('/\s+/','',$stroka), 'UTF-8');
echo "<br/><br/>Количество символов без пробелов: ".$kolSimvBezProb;
$kolSlov = split(" ",$stroka); //считаю количество слов разделенных пробелами
echo "Количество слов в строке = " .sizeof($kolSlov) ;
В результате 1- и 2-задачи показываются нормально.
А вот с количеством слов до конца не получается. Дело в том, что когда я ввожу обычный текст, программа считает правильно. А если я ввожу текст с переносом строки и иногда нажимая на ЕНТЕР, то программа их не считает.
Т.е. насколько я понимаю, не срабатывает первая формула:
$stroka = str_replace(array('\n', '\r', '\t'), ' ', $stroka);
Где прячется ошибка. Помогите, пожалуйста.
И еще, подскажите, правильно ли вообще написано все? в смысле валидности, безопасности?
(Добавление)
Вроде решил, заменил кавычки на парные
$stroka = str_replace(array("\n", "\r", "\t"), ' ', $stroka);
и, кажется, работает.
Вопрос к спецам насчет валидности и безопасности остается.
1. Урма - 15 Февраля, 2015 - 07:52:32 - перейти к сообщению