我可以将特定行从文件导出到另一个吗?

时间:2016-11-22 06:15:37

标签: php

如果文件A.php肯定有一些行,并且我想将A.php中的特定行导出或复制到新文件B.php,那么过程就像这样(在A.php中复制x到y的行 - 创建名为B.php的新文件 - 过去并保存B.php)。

因此,如果我想在以下代码中提取3到8行(例如)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <?php
    $fname= basename(__FILE__,'php');
    ?>
    <title><?php echo $fname; ?></title>
</head>
<body>
    <p>This is a test Page</p>
</body>
</html>

如果可以,我该如何详细说明?

2 个答案:

答案 0 :(得分:1)

从这里的文档:

http://php.net/manual/en/function.file.php

此命令将文件拆分为一行数组:

// substitute a local file for the URL
$lines = file('http://php.net/manual/en/function.file.php');
echo $lines[0];
// <!DOCTYPE html>
echo $lines[56];
//  <![endif]-->

获得所需的行后,您可以创建新文件并保存。有100种方法可以做到这一点。这是一个:

http://php.net/manual/en/function.file-put-contents.php

file_put_contents('fileInCurrentDirectory.php', $lines[3], FILE_APPEND | LOCK_EX);

file_put_contents('fileInCurrentDirectory.php', $lines[4], FILE_APPEND | LOCK_EX);

file_put_contents('fileInCurrentDirectory.php', $lines[5], FILE_APPEND | LOCK_EX);

答案 1 :(得分:1)

您可以使用file将文件转换为行数组,然后使用array_slice获取所需的行,最后file_put_contents导出到新文件。像这样:

function A2B($a,$b,$from,$to){
    $f = file($a,FILE_IGNORE_NEW_LINES);
    $n = array_slice($f,($from-1),($to-$from+1));
    file_put_contents($b,implode("\n",$n));
}

并将其称为

A2B("a.php","b.php",3,6);