1

PHPを使用してファイルを更新する必要があります

サンプルファイル:

#Start#

No. of records: 2

Name: My name,
Age: 18,
Date: 2013-07-11||

Name: 2nd name,
Age: 28,
Date: 2013-07-11||

#End#

「いいえ」を編集する必要があります。ファイルに別のレコードを追加するたびに、また、「#End#」の前に別のレコードが必要です

私は使用しています

$Handle = fopen($File, 'a');
$data = .......
fwrite($Handle, $Data); 

レコードを追加するには

「いいえ」を編集するにはどうすればよいですか。of records' & '#End#' の前にデータを追加しますか?

4

2 に答える 2

0

ファイルを変更する代わりに、それを解析し、PHP のデータを変更して、その後ファイルを書き換えます。

これを実現するには、まず、入力を php 配列に解析する関数を作成します。

function parse($file) {
    $records = array();
    foreach(file($file) as $line) {
        if(preg_match('~^Name: (.*),~', $line, $matches)) {
            $record = array('name' => $matches[1]);
        }
        if(preg_match('~^Age: (.*),~', $line, $matches)) {
            $record ['age'] = $matches[1];
        }   
        if(preg_match('~^Date: (.*)\|\|~', $line, $matches)) {
            $record ['date'] = $matches[1];
            $records [] = $record;
        }   
    }   
    return $records;
}

次に、配列をフラット化して同じファイル形式に戻す関数を作成します。

function flatten($records, $file) {
    $str  = '#Start#';
    $str .= "\n\n";
    $str .= 'No. of records: ' . count($records) . "\n\n";
    foreach($records as $record) {
        $str .= 'Name: ' . $record['name'] . ",\n";
        $str .= 'Age: ' . $record['name'] . ",\n";
        $str .= 'Date: ' . $record['name'] . "||\n\n";
    }
    file_put_contents($file, $str . '#End#');
}

次に、次のように使用します。

$records = parse('your.file');
var_dump($records);
$records []= array(
    'name' => 'hek2mgl',
    'age' => '36',
    'date' => '07/11/2013'
);

flatten($records, 'your.file');
于 2013-07-11T15:51:11.640 に答える
0

In case if file is relatively small (easily fits in memory), you can use file() function. It will return array, which you can iterate, etc.

If the file is larger, you'll need to read it in the loop using fgets(), writing data to the new temporary file and replacing original file with it after you're done

于 2013-07-11T15:37:04.030 に答える