Баг в pcre 7.0 (PHP 5.2.3)? @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 2 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Paul Yanchenko Муж.
новый человек
1
Сообщения: 112
Зарегистрирован: 05.02.04
Откуда: Екатеринбург
Заголовок сообщения: Баг в pcre 7.0 (PHP 5.2.3)?
Сообщение Добавлено: 1 Сентябрь 2007, 22:01:59 
Есть у меня регэксп, который служил мне верой и правдой до тех пор, пока я не обновил PHP с версии 5.1.4 до 5.2.3 (Win32). В ходе упрощения регулярного выражения я дошел до того, что выражение /((.)*)*/ не матчит ничего (!) Само собой, мне это кажется абсурдом, я попробовал откатиться на 5.1.4 и о, чудо! выражение матчит все (как собсно и должно быть)!

Сравниваю информацию из phpinfo() этих версий и имею в PHP 5.1.4:

Код:
PCRE (Perl Compatible Regular Expressions) Support    enabled
PCRE Library Version    6.6 06-Feb-2006


в PHP 5.2.3:
Код:
PCRE (Perl Compatible Regular Expressions) Support    enabled
PCRE Library Version    7.0 18-Dec-2006


Проверьте сами:

Код:
<?php

var_dump(preg_match('/((.)*)*/', 'abc'));

?>


В версии 5.1.4 возващается "int(1)", в 5.2.3 -- "int(0)".

Удаление любой пары скобок или любой звездочки дает положительный результат уже в обоих версиях. Но я повторюсь, это упрощенный вариант, я просто выкинул из него все лишнее, чтобы отладить конкретную строку, которая не матчилась, таким образом выкинуть эти скобки или звездочки из исходного регэкспа -- невозможно...

Мой вопрос звучит так: с чем я столкнулся? С багом в pcre 7.0 или с каким-то частным случаем, про который в документации сказано, что результат такого выражения непредсказуем или не регламентирован стандартом?
Paul Yanchenko Муж.
новый человек
1
Сообщения: 112
Зарегистрирован: 05.02.04
Откуда: Екатеринбург
Сообщение Добавлено: 2 Сентябрь 2007, 11:30:14 
С переходом на PHP 5.2.4, в котором PCRE обновлен до 7.2 проблема решилась. Всеобщая паника отменяется.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 2 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100