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. sanyoksanya - 06 Июля, 2018 - 17:34:04 - перейти к сообщению
вот рег выражение

preg_match("#^.{1,1000}$#", $some_text);

ищет все символы в количестве от 1 до 1000.
Но как только в текст попадают символы перевода строк, даже если символов всего 10, функция выдает false

В чем проблема такого поведения? Я начинаю думать что символы перевода строк не входят
под определение точки как любого символа? Так ли это?
2. andrewkard - 06 Июля, 2018 - 17:50:56 - перейти к сообщению
Цитата:

.{1,1000}
matches any character (except for line terminators)
3. Строитель - 06 Июля, 2018 - 17:59:34 - перейти к сообщению
sanyoksanya пишет:
Я начинаю думать что символы перевода строк не входят
под определение точки как любого символа? Так ли это
Да, это так - точка обозначает "почти" любой символ. Для соответствия символа "." и с символами перевода строки, используйте модификатор "s".
4. sanyoksanya - 06 Июля, 2018 - 18:42:28 - перейти к сообщению
Благодарю, теперь все понятно.
5. rgl - 15 Августа, 2018 - 14:39:32 - перейти к сообщению
Строитель пишет:
Для соответствия символа "." и с символами перевода строки, используйте модификатор "s"

Другой популярный у джаваскриптников способ - использовать вместо точки [\s\S]

 

Powered by ExBB FM 1.0 RC1