自动替换每个文件中的第一行
Automatically replace first line in each file
我有几个缩小文件(CSS 和 JS),我想自动替换每个文件的第一行(每个文件的第一行类似于 Minified @ 2017-03-21
)我重新缩小了这些文件。
我目前正在以这种方式添加该信息,但我接受建议:
<?php
$file = "test.css";
$add_info = "/* --- Minified today --- */ \n";
$add_info .= file_get_contents($file);
file_put_contents($file, $add_info);
?>
所以我的文件是这样结尾的:
/* --- Minified today --- */
body{margin:0}; /* etc */
很明显,在重复几次之后就这样结束了:
/* --- Minified today --- */
/* --- Minified today --- */
/* --- Minified today --- */
/* --- Minified today --- */
body{margin:0}; /* etc */
根本没用。
那么,我该怎么做(不影响性能)?该操作每周仅执行 1 至 2 次(最多),并且文件在缩小后约为 30KB。
注意:我使用的是 PHP 5.5 和 Apache 2.4。
你可以用file()
将文件读入数组并替换第一行。然后 file_put_contents()
将为您爆破阵列:
$file = "test.css";
$lines = file($file);
$add_info = "/* --- Minified today --- */ \n";
$lines[0] = $add_info;
file_put_contents($file, $lines);
如果他们可能没有将其作为第一行,请检查并替换或插入它:
if(strpos($lines[0], '/* --- Minified') !== false) {
$lines[0] = $add_info;
} else {
array_unshift($lines, $add_info);
}
我的问题是大文件。这是我使用的解决方案。我目前正在回显,但您始终可以保存到文件中。
$fh = fopen($local_file, 'rb');
echo "add\tfirst\tline\n"; // add your new first line.
fgets($fh); // moves the file pointer to the next line.
echo stream_get_contents($fh); // flushes the remaining file.
fclose($fh);
我有几个缩小文件(CSS 和 JS),我想自动替换每个文件的第一行(每个文件的第一行类似于 Minified @ 2017-03-21
)我重新缩小了这些文件。
我目前正在以这种方式添加该信息,但我接受建议:
<?php
$file = "test.css";
$add_info = "/* --- Minified today --- */ \n";
$add_info .= file_get_contents($file);
file_put_contents($file, $add_info);
?>
所以我的文件是这样结尾的:
/* --- Minified today --- */
body{margin:0}; /* etc */
很明显,在重复几次之后就这样结束了:
/* --- Minified today --- */
/* --- Minified today --- */
/* --- Minified today --- */
/* --- Minified today --- */
body{margin:0}; /* etc */
根本没用。
那么,我该怎么做(不影响性能)?该操作每周仅执行 1 至 2 次(最多),并且文件在缩小后约为 30KB。
注意:我使用的是 PHP 5.5 和 Apache 2.4。
你可以用file()
将文件读入数组并替换第一行。然后 file_put_contents()
将为您爆破阵列:
$file = "test.css";
$lines = file($file);
$add_info = "/* --- Minified today --- */ \n";
$lines[0] = $add_info;
file_put_contents($file, $lines);
如果他们可能没有将其作为第一行,请检查并替换或插入它:
if(strpos($lines[0], '/* --- Minified') !== false) {
$lines[0] = $add_info;
} else {
array_unshift($lines, $add_info);
}
我的问题是大文件。这是我使用的解决方案。我目前正在回显,但您始终可以保存到文件中。
$fh = fopen($local_file, 'rb');
echo "add\tfirst\tline\n"; // add your new first line.
fgets($fh); // moves the file pointer to the next line.
echo stream_get_contents($fh); // flushes the remaining file.
fclose($fh);