preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead

Комментариев: 0

Если ваше приложение использует функцию preg_replace() с модификатором /e, то довожу до Вашего сведения, что данная функция не поддерживается современным версиями PHP, если не изменяет память, то начиная с версии 5.5.

Показываю на своём примере исправление:

// Convert decimal
Было: $source = preg_replace('/&#(\d+);/me', "utf8_encode(chr(\\1))", $source); // decimal notation
Стало: $source = preg_replace_callback('/&#(\d+);/m', function($m){return utf8_encode(chr($m[1]));}, $source); // decimal notation
// Convert hex
Было: $source = preg_replace('/([a-f0-9]+);/mei', "utf8_encode(chr(0x\\1))", $source); // hex notation
Стало: $source = preg_replace_callback('/([a-f0-9]+);/mi', function($m){return utf8_encode(chr('0x'.$m[1]));}, $source); // hex notation

Короче меняйте на preg_replace_callback и удаляйте модификатор /e

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *