【发布时间】:2013-06-03 03:43:07
【问题描述】:
我正在尝试使用 PHP 将目录中的所有文件合并到一个文本文件中。
所有文件都是文本文件,每行一个单词。
我只需要将它们全部合并到一个包含所有单词的文本文件中,每行一个。
文件扩展名是 5 的 0-5 倍数(.10、.15、.20、.25)和 .txt 文件。
这是我目前所拥有的,但它只生成一个空文本文件。
<?php
$files = glob("./*.??");
$out = fopen("listTogether.txt", "w");
foreach($files as $file){
$in = fopen($file, "r");
while($line = fread($in)){
fwrite($out, $line);
echo "writing file";
}
fclose($in);
}
fclose($out);
?>
<!Doctype HTML>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>file merger</title>
</head>
<body>
<p>Doo Wop</p>
</body>
</html>
【问题讨论】:
-
为什么不简单地
fwrite($out, file_get_contents($file))?将循环体减少到一行。 -
这段代码不会抛出错误吗? fread() 需要两个参数。 . .我会改用file_get_contents。您也不会读取任何 .txt 文件,因为您的 glob 模式仅匹配两个字符扩展名。
-
您的代码似乎没问题。您可以随时添加
echo "open:", $file;和echo "write:", $line;来查看 PHP 正在做什么(一步一步) -
我还建议不要根据别人对您的 other question 的回答创建新问题。
-
@Jon 修复了它。你能把它写成答案让我选择吗?