我必须在不读/写整个文件的情况下将文本插入到特定位置的文件中。这可能只使用php吗?
mytext.txt content is 123456789
<?php
$message='new';
$file='mytext.txt';
$fh = fopen($file, 'rw+');
fseek($fh, 3);
fwrite($fh, $message);
fclose($fh);
?>
此代码将覆盖指定位置。 我正在寻找'0123new456789'而非'123new789'
答案 0 :(得分:1)
如果不先阅读文件,我就不会想你想做什么。不过,这应该有所帮助:
// Get file contents
$contents = file_get_contents($file);
// Split your strings
$beginning = substr($contents, 0, 4);
$ending = substr($contents, 4, 6);
// Re-write contents
$contents = $beginning . $message . $end;
// Write file contents
file_put_contents($file, $contents);
谢谢,
安德鲁
答案 1 :(得分:0)
你别无选择。 fopen()总是把指针放在文件的开头或结尾。在任何情况下,你必须通过文件直到你找到你要找的东西。在那里你可以关闭。 请参阅有关它的文档http://php.net/manual/en/function.fopen.php
顺便说一下,fseek($ fh,3)并不意味着找到3.是检索3个字节长度的东西。见http://php.net/manual/en/function.fseek.php