2017-10-25 8 views
1

は、私は、テキストファイルがPHPのにpreg_replaceはなかれ

REGION_NAME = 'bla_2'

ハロー

ハイテク

さよなら

私のスクリプトをbla.txt持っている私の読み取りファイルを上書きします##

<?php 
    $file = 'bla.txt'; 
    $file_contents = file_get_contents($file); 
    $fh = fopen($file, "w"); 
    $file_contents = preg_replace("/(REGION_NAME =) ('')/", "$1 'us-east-A'", "REGION_NAME = ''"); 
    fwrite($fh, $file_contents); 
    fclose($fh); 
?> 

私はそれを実行すると、正しいテキストが追加されますが、bla.txtファイル が上書きされ、他の言葉が失われます。

注:###私はstr_replaceを使用している場合は正常に動作しますが、一度bla_2変更は、その後、我々は再びスクリプトを使用することはできません...

任意のアイデア...?

$file_contents = str_replace('bla_2','bar',$file_contents); 
+1

のfopen($ファイル、「W」)の線に沿って何かだと思いますが、ファイルの先頭に記述するためのファイルを開きます。 fopen($ file、 'a')は、ファイルの最後に書き込み用のファイルをオープンするので、ファイルを上書きしないでください。 fopenマニュアルを参照してください。 – astidham2003

答えて

0

あなたはコードを読めば、あなたは$file_contents内のデータに対して交換しない、$file_contentsの初期値を上書きしています。あなたがする必要があるのは:$file_contents = preg_replace("/(REGION_NAME =) ('')/", "$1 'us-east-A'", $file_contents);です。免責条項として、私はあなたのコードを実際には実行しませんでしたが、私が見ているものから関数の正しい対象を渡すことはありませんでした。

そして、私はあなたが正規表現のためにしたいことはpreg_replace("REGION_NAME = '(.*)'", 'us-east-A', $file_contents)

+0

私はそれを試して、返信のために感謝btw-- – kbirds30

+0

これでファイルは上書きされませんが、行内のテキストは変更されていません。 – kbirds30

+0

正規表現で何をしようとしていますか?私は正規表現で最高ではないので、私に尋ねるが、それは私に右のように見えません。 – Cameeob2003