Я использую приложение внешнего интерфейса базы данных 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), имеющей таблицы и представления.

0