dirdir
Постоялец
- Регистрация
- 19 Мар 2012
- Сообщения
- 112
- Реакции
- 16
- Автор темы
- #1
Скажите пожалуйста. Есть файл со строками текста (windows-1251) Есть выражение.
Оно находит все строки, где больше или 5 слов (букв через пробел).
Но под одной версией ПХП, вдруг стало оно работать странным образом. Оно стало игнорировать строки. Т.е. две строки считать за 1.
В файле из строк.
aaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa
bbbbbb bbbbbbbb bbbbbbbb bbbbbbbb
cccccc cccccccc cccccccc
cccccc cccccccc cccccccc
cccccc cccccccc cccccccc
cccccc cccccccc cccccccc
cccccc cccccccc cccccccc
Стало находить вот что.
array() {
[0]=>
string(43) "aaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa"
[2]=>
string(34) "bbbbbb bbbbbbbb bbbbbbbb bbbbbbbb"
[10]=>
string(51) "cccccc cccccccc cccccccc
cccccc cccccccc cccccccc"
[11]=>
string(51) "cccccc cccccccc cccccccc
cccccc cccccccc cccccccc"
Когда они внесли эти изменения в версию PCRE?
Всегда вроде было что
Ищи начало строки, затем любой символ кроме пробела, затем пробел, затем конец строки.
И если в конструкцию ([^\s]+\s+) попадал конец строки, то он не учитывался, т.к. при модификаторах Um надо было искать минимум и построчно. Т.к. ищу через preg_match_all.
Скажите как быть? Или придётся везде менять регулярки?
PHP:
"#^([^\s]+\s+){5,}$#Umi";
Оно находит все строки, где больше или 5 слов (букв через пробел).
Но под одной версией ПХП, вдруг стало оно работать странным образом. Оно стало игнорировать строки. Т.е. две строки считать за 1.
В файле из строк.
aaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa
bbbbbb bbbbbbbb bbbbbbbb bbbbbbbb
cccccc cccccccc cccccccc
cccccc cccccccc cccccccc
cccccc cccccccc cccccccc
cccccc cccccccc cccccccc
cccccc cccccccc cccccccc
Стало находить вот что.
array() {
[0]=>
string(43) "aaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa"
[2]=>
string(34) "bbbbbb bbbbbbbb bbbbbbbb bbbbbbbb"
[10]=>
string(51) "cccccc cccccccc cccccccc
cccccc cccccccc cccccccc"
[11]=>
string(51) "cccccc cccccccc cccccccc
cccccc cccccccc cccccccc"
Когда они внесли эти изменения в версию PCRE?
Всегда вроде было что
PHP:
"#^([^\s]+\s+){5,}$#Umi";
Ищи начало строки, затем любой символ кроме пробела, затем пробел, затем конец строки.
И если в конструкцию ([^\s]+\s+) попадал конец строки, то он не учитывался, т.к. при модификаторах Um надо было искать минимум и построчно. Т.к. ищу через preg_match_all.
Скажите как быть? Или придётся везде менять регулярки?