sql — PHP заменяет точки внутри обратных кавычек

У меня есть проект, в котором мне нужно изменить имена таблиц множества таблиц в моей базе данных и, следовательно, множество запросов SQL.

Прямо сейчас у всех моих таблиц есть имена типа 1.customers, 2.customers и т. Д.
Мне нужно обновить их до 1_customer, 2_customers и т. Д.

Возможно ли с помощью preg_replace заменить все точки в обратных кавычках на подчеркивание

Например, я бы хотел

"UPDATE `1.customers` SET `value` = '1.0'"

становиться

"UPDATE `1_customers` SET `value` = '1.0'"

Всего около 50 таблиц.

0

Решение

Заменяет все точки в кавычках подчеркиванием

$input = "UPDATE `1.customers` SET `value` = '1.0'";

$output = preg_replace_callback(
'/`(.+?)`/',
function ($matches) {
return str_replace('.', '_', $matches[0]);
},
$input
);

$ выходной

UPDATE `1_customers` SET `value` = '1.0'
1

Другие решения

Используйте группы захвата в регулярном выражении, чтобы соответствовать частям до и после точки, чтобы вы могли скопировать их в замену.

$str = preg_replace_callback('/(`\d+)\.(\w+`)/', '$1_$2', $str);

Это предполагает, что есть только одна точка в каждом имени. Если нет, вы можете использовать preg_replace_callback() сопоставить имя с любым количеством точек, а затем использовать str_replace() в функции обратного вызова, чтобы заменить все точки подчеркиванием.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector