2017-04-24 15 views
-1

行に特定のキーIDが含まれている場合、テキストファイルを検索しようとしています。行を追加しない場合は、行全体を更新します。PHPファイルの行を追加または編集するファイル

だから、このテキストファイルに基づいて:私はID1345を検索してからのみ、その行を更新したい

admin,1234,ID1345,NW 
staff,1325,ID1001,NE 
staff,2157,ID2003,SW 
staff,8519,ID3001,NS 

、他の行は、彼らは正確にご利用いただけます。行にID1345が含まれていない場合は、テキストファイルに新しい行を追加します。

$search = 'ID1345'; 
$result = 'admin,6698,ID1345,OP'; 

$reading = fopen('myfile', 'r'); 
$writing = fopen('myfile.tmp', 'w'); 
$replaced = false; 

while (!feof($reading)) { 
    $line = fgets($reading); 
    if (stristr($line, $search)) { 
    $line = "$result\n"; 
    $replaced = true; 
    } 
    fputs($writing, $line); 
} 

if (!$replaced) fputs($writing, "$result\n"); 
fclose($reading); fclose($writing); 
rename('myfile.tmp', 'myfile'); 

これは、検索のために働くと交換するようだが、ラインが存在しない場合には、それだけではなく、一度にそれを追加し続けて:

は、これまでのところ私は持っています。

私はこれがif (!$replaced)行に起因することを知っていますが、これを行う方法がわかりません。

上記の例では、これはどんなのファイルに値を読み書きします小さいですが、ファイルに数千のエントリがあるかもしれません。..

おかげ

+2

サイドノート:このためにデータベースを使用しない理由はありますか?テキストファイルは大変な作業です。 –

+0

ポインタが正しい場所にない可能性があります。試して。 'fclose()'の下に 'if($ repl ..)'行を移動し、 'if($ repl ..)file_put_contents( 'myfile.tmp'、" $ result \ n "、FILE_APPEND);' – JustOnUnderMillions

+0

doつまり、このスクリプトを一度実行したとき、または同じファイルを使用して複数回実行したときだけ追加を続けるということですか? 2番目の場合は、認識されない改行文字である可能性がありますか? – Kaddath

答えて

0
function file_properties($fileProperties) { 
$result = array(); 
$lines = split("\n", $fileProperties); 
$key = ""; 
$isWaitingOtherLine = false; 

foreach($lines as $i=>$line) { 
    if(empty($line) || (!$isWaitingOtherLine && strpos($line,"#") === 0)) continue; 

    if(!$isWaitingOtherLine) { 
     $key = substr($line,0,strpos($line,'=')); 
     $value = substr($line,strpos($line,'=') + 1, strlen($line)); 
    } else { 
     $value .= $line; 
    } 

    /* Check if ends with single '\' */ 
    if(strrpos($value,"\\") === strlen($value)-strlen("\\")) { 
     $value = substr($value, 0, strlen($value)-1)."\n"; 
     $isWaitingOtherLine = true; 
    } else { 
     $isWaitingOtherLine = false; 
    } 

    $result[$key] = $value; 
    unset($lines[$i]); 
} 

return $result; 

}

Lavavelの.envのような拡張子やその他* Javaの.properties

+0

Java ???????????? –

+0

Javaと同じように試して実装しましたか? –

関連する問題