preg_replace('!s:(d+):"(.*?)";!se', "'s:'.strlen('$2').':"$2";'", $value); 正規表現についてはあまり詳しくありません ディスカッションに返信(解決策) preg_replace_callback('!s:(d+):"(.*?)";! s', function($ m) { return 's:'.strlen($m[2]).":"$m[2]";";}, $value);