make_backup の中で、preg_replace を使って文字列の最後の改行の数を、x個から1個にする処理をしている部分があります。これは、(勘違いがなければ) rtrim で等価の処理にできると思いますがどうでしょうか?
それと正規表現の部分で同じパターンなのに、get_backup の中ではシングルクォートで囲っているのに、make_backup の中ではダブルクォートで囲っているのがあるので、これも修正案に入れておきます。
unset($backups[$age]); } - $strout = preg_replace("/([^\n])\n*$/", "$1\n", $strout); + $strout = rtrim($strout, "\n") . "\n"; // Escape 'lines equal to PKWK_SPLITTER', by inserting a space - $body = preg_replace('/^(' . preg_quote(PKWK_SPLITTER) . "\s\d+)$/", '$1 ', get_source($page)); + $body = preg_replace('/^(' . preg_quote(PKWK_SPLITTER) . '\s\d+)$/', '$1 ', get_source($page)); $body = PKWK_SPLITTER . ' ' . get_filetime($page) . "\n" . join('', $body); - $body = preg_replace("/\n*$/", "\n", $body); + $body = rtrim($body, "\n") . "\n"; $fp = _backup_fopen($page, 'wb')