PHPのシリアル化された値を含むmysqlダンプをクリーンアップする必要があります(sedを使用してURLの検索/置換を行います)
PHPでは、そのようにします。
<?php
$ret_string = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.mb_strlen('$2').':\"$2\";'", $string );
?>
bashでそれをどのように行いますか?
元の文字列の例:
a:3:{s:7:"string1";s:4:"test";s:3:"url";s:17:"http://myurl.com";s:7:"string2";s:4:"test";}
myurl.comをmynewurl.comに置き換えたので、次のようになります。
a:3:{s:7:"string1";s:4:"test";s:3:"url";s:17:"http://mynewurl.com";s:7:"string2";s:4:"test";}
変更する必要があるのは、最終的な文字列が次のようになるための新しい文字列の長さ(s:17)を反映する文字列の長さです。
a:3:{s:7:"string1";s:4:"test";s:3:"url";s:19:"http://mynewurl.com";s:7:"string2";s:4:"test";}
私はファイルシステム上のファイルである私のsqlダンプにそれらの多くを持っています。ドメインは変更されましたが、URLに追加のパスがある可能性があるため、文字列の長さが異なります