Народ, есть код, который раньше для WP перезаменял имя файла, 5-ть лет назад он работал, а сейчас нет. Посмотрите плз и подскажите что не так? PHP: <?php $sql_file = 'vip-remont.sql'; $replace_from = 'site.ru'; $replace_to = 'wpsite.loc'; $ff = file_get_contents($sql_file); $ff = str_replace($replace_from, $replace_to, $ff); $count = 0; function serializereplace($matches) { global $replace_to; global $count; $found = $matches[0]; if (strpos($found, $replace_to)!==FALSE) { preg_match('/"(.*)"/', $found, $out); $count++; return serialize($out[1]); } else { return $found; } } $ff = preg_replace_callback( '|s\:[0-9]*\:".*?"\;|', "serializereplace", $ff); file_put_contents('out.sql', $ff); echo $count. " items replaced."; ?>
Регулярку вот эту вот перепроверь, как она у тебя отрабатывает именно в php PHP: '|s\:[0-9]*\:".*?"\;|'
Я не понимаю пхп, поэтому и обратился сюда( Ну оно пишет "0 items replaced", а должно перезаписывать ссылки.
Так могло и не быть никаких ошибок. Регулярка ищет что-то такое: Код (Text): s:7:"site.ru"; А если в том дампе было экранирование бекслешем, то регулярка уже не найдёт совпадений. Код (Text): s:7:\"site.ru\";