Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите с рег. выражениями
Форумы портала PHP.SU » PHP » Регулярные выражения » Помогите с рег. выражениями

Страниц (1): [1]
 

1. Урма - 15 Февраля, 2015 - 07:52:32 - перейти к сообщению
Задача такова: есть строка $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);

и, кажется, работает.

Вопрос к спецам насчет валидности и безопасности остается.

 

Powered by ExBB FM 1.0 RC1