2011-06-27 5 views
0

私はPHPで1行を置き換えるには?

AA=1 
BB=2 
CC=3 

は、今私は

AA=1 
BB=5 
CC=3 

は、私はこれをどのように行うのですか、このように、 "BB =" 見つけて= 5 BBとしてそれを交換したい、このように、test.txtというファイルを持っています?

ありがとうございました。

+1

こんにちはみんなは、私は(答え、$ strの=にpreg_replaceを得ました'/ BB = \ d /'、 'BB = 5'、$ str);私はこれがより良い方法だと思いますよね? – CCC

+0

この場合、文字列変数で完全なファイルを読み込み、preg_replaceを実行してファイルを新しい文字列変数で上書きする必要があります。 –

+0

正しい(下記の私のコメントを参照してください) –

答えて

2

<?php 

$filename = 'file.txt'; 

// Parse the file assuming it's structured as an INI file. 
// http://php.net/manual/en/function.parse-ini-file.php 
$data = parse_ini_file($filename); 

// Array of values to replace. 
$replace_with = array(
    'BB' => 5 
); 

// Open the file for writing. 
$fh = fopen($filename, 'w'); 

// Loop through the data. 
foreach ($data as $key => $value) 
{ 
    // If a value exists that should replace the current one, use it. 
    if (! empty($replace_with[$key])) 
    $value = $replace_with[$key]; 

    // Write to the file. 
    fwrite($fh, "{$key}={$value}" . PHP_EOL); 
} 

// Close the file handle. 
fclose($fh); 
+0

非常に素晴らしい1は:)あなたがフレームワークとあまり作業するとき、あなたはすべてにparse_ini_fileのようなクールなものを忘れて、何が起こるかのthats :) –

+0

偉大な~~私はこのアイデアが好きです。 – CCC

0

あなたは、ファイル内のテキストを置き換え&見つけるためのPEARパッケージを使用することができます。詳細については

http://www.codediesel.com/php/search-replace-in-files-using-php/ 
+0

申し訳ありませんが、私は組み込みOSを使用しています。 – CCC

1

を読んで最も簡単な方法(上記のような小さなファイルについて話している場合)、のようになります。

// Read the file in as an array of lines 
    $fileData = file('test.txt'); 

    $newArray = array(); 
    foreach($fileData as $line) { 
     // find the line that starts with BB= and change it to BB=5 
     if (substr($line, 0, 3) == 'BB=')) { 
     $line = 'BB=5'; 
     } 
     $newArray[] = $line; 
    } 

    // Overwrite test.txt 
    $fp = fopen('test.txt', 'w'); 
    fwrite($fp, implode("\n",$newArray)); 
    fclose($fp); 

(のようなもの)

+0

ハイテクアーロン・マレー、thanks.itの小さなファイルが、約50行。私は50行を持っている場合は交換する必要がある、と私たちはループのために行うたびに、私はそれが大量のリソースを要すると思います。 – CCC

+0

@heefan [OK]を、私は読んで/書く方法の概要がほしいと思った。また、文字列ではなく配列としてそれを読んで、その後/データを検索し、データを操作して、ファイルに出戻ってそれを書くために正規表現パターンを使用します$ FILEDATA =のfile_get_contents(「test.txtという」)を使用することができます。それを行うために迅速かつ汚い方法@heefan –

+0

は、文字列または配列のいずれかとして、ファイル全体を読んで、必要に応じてそれを操作して、ファイルを上書きする(または新しいファイルに書き込む)更新された情報です。 –

3
<?php 

    $file = "data.txt"; 
    $fp = fopen($file, "r"); 
    while(!feof($fp)) { 
    $data = fgets($fp, 1024); 

    // You have the data in $data, you can write replace logic 
    Replace Logic function 
    $data will store the final value 

    // Write back the data to the same file 
    $Handle = fopen($File, 'w'); 
    fwrite($Handle, $data); 


    echo "$data <br>"; 
    } 
    fclose($fp); 

?> 

は、上記のコード平和はあなたのファイルからデータを与え、あなたが戻っにデータを書き込むのに役立ちますファイル。あなたのファイルは、INIファイル(つまり、キー=値)のように構成されていることを、あなたはparse_ini_fileを使用して、このような何かしたと仮定すると

関連する問題