Обновлённый 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 |