0

我有这段代码可以读取一个文件,然后逐行遍历它。

如果该行中有匹配项,则更新值:

$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

试试这个:

改变:

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 回答
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 回答