/** * データphp形式のファイルで、末尾にデータを追加する * * @static * @return boolean */ function putDataPhp($data_php, &$cont, $perm = 0606, $ncheck = false) { if ($cont === "") { return true; } $pre_quote = preg_quote(DataPhp::getPre()); $hip_quote = preg_quote(DataPhp::getHip()); $cont_esc = DataPhp::escapeDataPhp($cont); $old_cont = @file_get_contents($data_php); if ($old_cont) { // ファイルが、データphp形式以外の場合は、何もせずにfalseを返す if (!preg_match("/^\\s*<\\?php\\s\\/\\*/", $old_cont)) { trigger_error(__FUNCTION__ . '() file is broken.', E_USER_WARNING); return false; } $old_cut = preg_replace('{' . $hip_quote . '.*$}s', '', $old_cont); // 指定に応じて、古い内容の末尾が改行でなければ、改行を追加する if ($ncheck) { if (substr($old_cut, -1) != "\n") { $old_cut .= "\n"; } } $new_cont = $old_cut . $cont_esc . DataPhp::getHip(); // データ内容がまだなければ、新規データphp } else { $new_cont = DataPhp::getPre() . $cont_esc . DataPhp::getHip(); } FileCtl::make_datafile($data_php, $perm); if (false === file_put_contents($data_php, $new_cont, LOCK_EX)) { // die("Error: ファイルを更新できませんでした"); return false; } return true; }
/** * データphp形式のファイルで、末尾にデータを追加する */ public static function putDataPhp($data_php, $cont, $perm = 0606, $ncheck = false) { if ($cont === "") { return true; } $pre_quote = preg_quote(DataPhp::getPre()); $hip_quote = preg_quote(DataPhp::getHip()); $cont_esc = DataPhp::escapeDataPhp($cont); $old_cont = FileCtl::file_read_contents($data_php); if ($old_cont) { // ファイルが、データphp形式以外の場合は、何もせずにfalseを返す if (!preg_match("/^\\s*<\\?php\\s\\/\\*/", $old_cont)) { trigger_error('putDataPhp() file is broken.', E_USER_WARNING); return false; } $old_cut = preg_replace('{' . $hip_quote . '.*$}s', '', $old_cont); // 指定に応じて、古い内容の末尾が改行でなければ、改行を追加する if ($ncheck) { if (substr($old_cut, -1) != "\n") { $old_cut .= "\n"; } } $new_cont = $old_cut . $cont_esc . DataPhp::getHip(); // データ内容がまだなければ、新規データphp } else { $new_cont = DataPhp::getPre() . $cont_esc . DataPhp::getHip(); } // ファイルがなければ生成 FileCtl::make_datafile($data_php, $perm); // 書き込む $fp = @fopen($data_php, 'wb') or p2die("{$data_php} を更新できませんでした"); flock($fp, LOCK_EX); $last = ignore_user_abort(1); ftruncate($fp, 0); fwrite($fp, $new_cont); ignore_user_abort($last); flock($fp, LOCK_UN); fclose($fp); return true; }