【问题标题】:Pointer move to lines and delete them in php , How i do it?指针移动到行并在 php 中删除它们,我该怎么做?
【发布时间】:2016-07-23 19:46:26
【问题描述】:

我有线条

abc
def
ghi
jkl
mno
pqr
xyz

我想取前 4 行并删除它们?

我正在使用该文件

$datafile="/var/www/html/test/data/$data";
$fp = fopen($datafile,"r");

我被困在这里了!!如何移动指针,如何使用数组或任何缓冲区??

【问题讨论】:

  • 你可以用两行来做到这一点:$lines = file($filename); file_put_contents( $filename, array_splice( $lines, 4 ) );

标签: php arrays file pointers buffer


【解决方案1】:
$array = file("/var/www/html/test/data/$data");
$array = array_slice($array, 4);

【讨论】:

  • 我建议将array_slice 的结果放在另一个变量中,然后将重命名的结果再次保存到文件中......
  • 取决于是否需要保存它们。 $name = "/var/www/html/test/data/$data"; file_put_contents($name, array_slice(file($name), 4));
【解决方案2】:

您可以使用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);

        }
    }

干杯...祝你好运 ;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2018-01-16
    • 1970-01-01
    相关资源
    最近更新 更多