Авторизация
 Регистрация   Войти   Забыли пароль? 

Доработка кода для PHP 5.3

Обновлённый PHP-Fusion Bogatyr / Free CMS PHP-Fusion 7 Bogatyr / PHP-Fusion Core code / Доработка кода для PHP 5.3


 Russian

Замена ereg (eregi) на preg_match в PHP 5.3 (устаревание POSIX)

В PHP 5.3 разработчки решили, наконец, избавиться от POSIX регулярных выражений – в самом деле, зачем нужны две библиотеки для работы с регулярными выражениями, если можно обойтись одной? К тому же, POSIX регулярные выражения гораздо медленнее чем Perl совместимые регулярные выражения (PCRE).

Теперь, разработчики в срочном порядке исправляют свой код, заменяя функции ereg, eregi, ereg_replace, ereg_replacei соответствующими PCRE аналогами, благо, замена получилась довольно простой:

1. заменить ereg и eregi на preg_match, ereg_replace и ereg_replacei на preg_repalce;

2. добавить // разделители в начало и конец регулярного выражения;

3. если POSIX функция кончается на i (eregi, ereg_replacei) то добавить i в конец регулярного выражения после разделителя.

4. заменить POSIX спецсимволы соответствуюущими PCRE аналогами:
[:alnum:] -> w или [0-9a-z]
[:digit:] -> d или [0-9]
[:space:] -> s
[:alpha:] -> [a-z]
шаг четвертый не обязателен – спецсимволы типа [[:alnum:]] теперь поддерживаются в PCRE!

примеры:

ereg('expression') -> preg_match('/expression/')

eregi('expression') -> preg_match('/expression/i')

eregi('^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+.[a-z]2,4$') -> preg_match('/^[a-z0-9][a-z0-9_.-]*@[a-z0-9.-]+.[a-z]2,4$/i')


http://lithiums.ru/?p=200 - 12.12.2012

Code completion for PHP 5.3

Обновлённый PHP-Fusion Bogatyr / Free CMS PHP-Fusion 7 Bogatyr / PHP-Fusion Core code / Code completion for PHP 5.3


 English

Replacing ereg (eregi) with preg_match in PHP 5.3 (POSIX obsolescence)

In PHP 5.3, developers decided to finally get rid of POSIX regular expressions - in fact, why do we need two libraries for working with regular expressions, if you can manage one? In addition, POSIX regular expressions are much slower than Perl compatible regular expressions (PCRE).

Now, the developers immediately fix their code, replacing the ereg, eregi, ereg_replace, ereg_replacei functions with the corresponding PCRE counterparts, fortunately, the replacement was rather simple:

1. replace ereg and eregi with preg_match, ereg_replace and ereg_replacei with preg_repalce;

2. add delimiters to the beginning and end of the regular expression;

3. If the POSIX function ends on i (eregi, ereg_replacei) then add i to the end of the regular expression after the delimiter.

4. replace POSIX special characters with the corresponding PCRE analogs:
[:alnum:] - w or [0-9a-z]
[:digit:] - d or [0-9]
[:space:] - s
[:alpha:] - [a-z]
the fourth step is not necessary - special characters like [[:alnum:]] are now supported in PCRE!

Examples:

ereg('expression') -> preg_match('/expression/')

eregi('expression') -> preg_match('/expression/i')

eregi('^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+.[a-z]2,4$') -> preg_match('/^[a-z0-9][a-z0-9_.-]*@[a-z0-9.-]+.[a-z]2,4$/i')


http://lithiums.ru/?p=200 - 12.12.2012

Добавить комментарий

Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
HTML-code and BB-code for blogs and forums

<a href="https://php-fusion.vveb.ws/php-fusion.php?id=24">Доработка кода для PHP 5.3</a>


[url=https://php-fusion.vveb.ws/php-fusion.php?id=24]Доработка кода для PHP 5.3[/url]

Language: Default
 
Код для PHP-Fusion