我有一些代码可以读取文件,然后逐行浏览。
如果行中有匹配值,则更新值:
$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?
由于
答案 0 :(得分:1)
试试这个:
变化:
foreach ($lines as $line_num => $line)
到
foreach ($lines as $line_num => &$line)
请注意& - 按引用分配$ line。您对$ line所做的更改将反映在包含它们的数组中($ lines)
file_put_contents($filePath, implode("\n", $lines))
该行将$ lines数组的更改内容写回到文件路径中 - 使用换行符连接数组元素。
答案 1 :(得分: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
}
}
一切似乎都在发挥作用:)