3v4l.org

run code in 300+ PHP versions simultaneously
<?php function escape(string $query) { return preg_replace_callback('/{(([^.}]+?)\.)?(.*?)}/', function ($matches) { $quoted = ''; // Quote table name. If there is an explicit database, quote it, too. if ($matches[2] !== '') { $quoted .= '`' . $matches[2] . '`.'; } // Quote the table name, keeping curly brackets so potential prefixes can // be added later. $quoted .= '`{' . $matches[3] . '}`'; return $quoted; }, $query); } var_dump(escape('SELECT * FROM system')); var_dump(escape('SELECT * FROM {system} ')); var_dump(escape('SELECT * FROM {db.system}')); var_dump(escape('SELECT * FROM db.system'));
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.14
string(20) "SELECT * FROM system" string(25) "SELECT * FROM `{system}` " string(29) "SELECT * FROM `db`.`{system}`" string(23) "SELECT * FROM db.system"

preferences:
170.5 ms | 407 KiB | 5 Q