我有一个看起来像这样的文件:
[TestKey1]
Test1
Test2
[TestKey2]
Item1
Item2
现在,我想添加另一个密钥(例如Test3)。这是我的代码。
$ModulCat = "TestKey1";
$ModulName = "Test-Update";
$ModulList = '../cake.inc';
$ModulListAsFile = file('../cake.inc');
$line_number = false;
$fHandler = fopen($ModulList, 'r+');
if($fHandler)
{
while (list($key, $line) = each($ModulListAsFile) and !$line_number)
{
$line_number = (strpos($line, $ModulCat) !== FALSE) ? $key + 1 : $line_number;
}
if($line_number)
echo "$line_number\n";
else
echo "Not found";
GoToLine($fHandler, $line_number + 1);
fwrite($fHandler, "\x8\n$ModulName");
fclose($fHandler);
}
else
{
echo 'Can not open file.';
}
function GoToLine($handle,$line)
{
fseek($handle,0);
$i = 0;
$bufcarac = 0;
for($i = 1;$i<$line;$i++)
{
$ligne = fgets($handle);
$bufcarac += strlen($ligne);
}
fseek($handle,$bufcarac);
}
但这会将我的文件更改为:
Test1
Test2
Test-Update
[TestKey2]
Item1
Item2
所以我的第一行被彻底删除了,我做错了什么?
修改
我现在有了这个代码:
$file = new SplFileObject($ModulList, "r+");
while(!$file->eof())
{
$line = $file->fgets();
if (strpos($line, "[$ModulCat]") !== false)
{
echo "Category found.";
$file->fwrite("$ModulName\n");
}
else
{
echo "Category not found.";
}
}
这改变了这个:
[Stammdaten]
Test-KIA
[System]
Updates
UpdateItem
到此:
[Stammdaten]
Test-Update
ystem]
Updates
UpdateItem
为什么在下一行中删除一个项目和一个字符?