0

ファイルを読み込んで、1行ずつ処理するこのコードがあります。

行に一致するものがある場合、値が更新されます:

$filePath = $_REQUEST['fn'];
$lines = file(); 
foreach ($lines as $line_num => $line) 
{
if(stristr($line,'Device') && stristr($line,'A=0FEDFA')) $line = str_replace ("ID=\"", "ID=\"***",$line);

if(stristr($line,'Style')) $line =  str_replace ("ID=\"", "ID=\"***",$line);
}

これを$filePathとして保存するにはどうすればよいですか?

ありがとう

4

2 に答える 2

1

私はこれをPHP4で実行しています:

foreach ($lines as $line_num => $line) 
{
if(stristr($line,'Device') && stristr($line,'A=0FEDFA')) $line[$line_num] = str_replace ("ID=\"", "ID=\"***",$line);

if(stristr($line,'Style')) $lines[$line_num] =  str_replace ("ID=\"", "ID=\"***",$line);
}

次に使用:

fileputcontents($filePath, ("\n", $lines))

PHP4のこの関数

function fileputcontents($filename, $data)
{
 if( $file = fopen($filename, 'w') )
  {
  $bytes = fwrite($file, is_array($data) ? implode('', $data) : $data);
  fclose($file); return $bytes; // return the number of bytes written to the file
  }
}

すべてが機能しているようです:)

于 2013-01-24T13:40:08.140 に答える
1

これを試して:

変化する:

foreach ($lines as $line_num => $line) 

foreach ($lines as $line_num => &$line) 

& - を参照して $line を割り当てることに注意してください。$line に加えた変更は、それらを含む配列 ($lines) に反映されます。

file_put_contents($filePath, implode("\n", $lines))

その行は、$lines 配列の変更されたコンテンツをファイル パスに書き戻し、配列の要素を改行で連結します。

于 2013-01-24T12:53:47.057 に答える