Я использую приложение внешнего интерфейса базы данных dbkiss (см. Код: github/dbkiss.php), которое теперь кажется неподдерживаемым. Он работает с PHP5, но теперь разрывается с PHP7 со следующей ошибкой:
preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
In dbkiss.php on line 308.
Backtrace#1 preg_replace(#([a-z]+://[a-zA-Z0-9\.\,\;\:\[\]\{\}\-\_\+\=\!\@\#\%\&\(\)\/\?\`\~]+)#e, create_links_eval("\1"), GG3) called at [/var/www/html/r4stdb/dbkiss.php:308]
#2 create_links(GG3) called at [/var/www/html/r4stdb/dbkiss.php:4732]
Я нашел 26 строк, которые используют устаревшую функцию preg_replace(). Ниже приведен пример поврежденных линий:
$trace = preg_replace("/^#0[\s\S]+?\n#1/", "#1", $trace); // Remove call to errorHandler() from trace.
$text = preg_replace('#([a-z]+://[a-zA-Z0-9\.\,\;\:\[\]\{\}\-\_\+\=\!\@\#\%\&\(\)\/\?\`\~]+)#e', 'create_links_eval("\\1")', $text);
$query = preg_replace('#^([\s\S]+)LIMIT\s+\d+\s+OFFSET\s+\d+\s*$#i', '$1', $query);
$query = preg_replace('#^([\s\S]+)LIMIT\s+\d+\s*,\s*\d+\s*$#i', '$1', $query);
$query = preg_replace("#^({$words})(\s)#i", '<font color="'.$color.'">$1</font>$2', $query);
$query = preg_replace("#(\s)({$words})$#i", '$1<font color="'.$color.'">$2</font>', $query);
$query = preg_replace("#([\s\(\),])({$words})([\s\(\),])#i", '$1<font color="'.$color.'">$2</font>$3', $query);
$query = preg_replace("#([\s\(\),])({$words})([\s\(\),])#i", '$1<font color="'.$color.'">$2</font>$3', $query);
...
Это очень удобный инструмент с открытым исходным кодом, который должен оставаться актуальным! Я был бы признателен, если бы кто-нибудь мог раскошелиться на github и обновить его для работы с PHP7 и базой данных Postgres (v10.6), имеющей таблицы и представления.