PCRE версии

NekiKawainie

Новичок
Скажите пожалуйста. Есть файл со строками текста (windows-1251) Есть выражение.

PHP:
"#^([^\s]+\s+){5,}$#Umi";
Оно находит все строки, где больше или 5 слов (букв через пробел).

Но под одной версией ПХП, вдруг стало оно работать странным образом. Оно стало игнорировать строки. Т.е. две строки считать за 1, для того что бы соответсвовать [^\s] (всё кроме пробела)

В файле из строк.

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. Т.е. каждая строка была строкой, а тут вдруг стало склеивать строки.

Скажите как быть? Или придётся везде менять регулярки?
 

tony2001

TeaM PHPClub
>Когда они внесли эти изменения в версию PCRE?
Вряд ли тебе кто-то сможет ответить на этот вопрос.
Попробуй, конечно, поискать тут http://pcre.org/changelog.txt, но я сильно сомневаюсь.

Вообще, надо начинать с другого.
Что поменялось? Какая разница между версией, где это работало, и версией, где это не работает?
 
Сверху