У меня есть строки как
abc
def
ghi
jkl
mno
pqr
xyz
Я хочу взять первые 4 строки и удалить их?
Я использую файл
$datafile="/var/www/html/test/data/$data";
$fp = fopen($datafile,"r");
Я застрял здесь! Как переместить указатель, как использовать массив или любой буфер ??
$array = file("/var/www/html/test/data/$data");
$array = array_slice($array, 4);
Ты можешь использовать file_get_contents()
чтобы получить содержимое файла, а затем преобразовать его в массив, используя preg_split()
, После того, как у вас есть массив строк; просто используйте array_slice()
вырезать массив из индекса, который вы хотите … в вашем случае 4. Код ниже показывает, как …
<?php
// THE TEXT FILE TO BE READ:
$targetFile = "/var/www/html/test/data/$data";
// GET THE CONTENTS OF THE FILE & STORE IT IN A VARIABLE (IF IT EXISTS)
$strFileContents = null;
if(file_exists($targetFile)){
$strFileContents = file_get_contents($targetFile);
}
// EVERY LINE IN A IS TERMINATED BY A NEW LINE CHARACTER.... WE KNOW THAT.
// SO WE SPLIT THE CONTENTS OF THE FILE USING THIS KNOWLEDGE...
if(!is_null($strFileContents)){
$arrFileLines = preg_split("#\n#", $strFileContents);
// SELECT ALL ELEMENTS FROM THE 4TH ELEMENT TILL THE END
$arrResultant = array_slice($arrFileLines, 4);
// CONVERT THE ARRAY BACK TO STRING...
$strBuffer = implode("\n", $arrResultant);
// RE-SAVE THE FILE BACK...
file_put_contents($targetFile, $strBuffer);
}
Или даже очень кратко;
<?php
// THE TEXT FILE TO BE READ:
$targetFile = "/var/www/html/test/data/$data";
if(file_exists($targetFile)){
$arrFileLines = file($targetFile);
if(!empty($arrFileLines) && count($arrFileLines) > 4){
// SELECT ALL ELEMENTS FROM THE 4TH ELEMENT TILL THE END
$arrResultant = array_slice($arrFileLines, 4);
// CONVERT THE ARRAY BACK TO STRING...
$strBuffer = implode("", $arrResultant);
// RE-SAVE THE FILE BACK...
file_put_contents($targetFile, $strBuffer);
}
}
Ура … и удачи 😉