PHP - 在另一个文本文件中写入文本文件内容

时间:2013-05-08 23:28:29

标签: php text-files server-side fwrite

我想检查文本文件的内容是否与另一个文本文件的内容相同,如果不是,则将其中一个写入另一个文件。我的代码如下:

<?php $file = "http://example.com/Song.txt";
$f = fopen($file, "r+");
$line = fgets($f, 1000);
$file1 = "http://example.com/Song1.txt";
$f1 = fopen($file1, "r+");
$line1 = fgets($f1, 1000);
if (!($line == $line1)) {
    fwrite($f1,$line);
    $line1 = $line;
    };
print htmlentities($line1);
?>

正在打印该行,但内容未写入文件中。

关于可能出现什么问题的任何建议?

BTW:我正在使用000webhost。我认为这是网络托管服务,但我已经检查过,应该没有问题。我还在这里检查了fwrite函数:http://php.net/manual/es/function.fwrite.php。 拜托,任何帮助都会非常苛刻。

2 个答案:

答案 0 :(得分:1)

使用文件时,您需要使用PATHS而不是URLS 所以
  $file = "http://example.com/Song.txt";成为
 $file = "/the/path/to/Song.txt";

下一步:

$file1 = '/absolute/path/to/my/first/file.txt';
$file2 = '/absolute/path/to/my/second/file.txt';
$fileContents1 = file_get_contents($file1);
$fileContents2 = file_get_contents($file2);
if (md5($fileContents1) != md5($fileContents2)) {
    // put the contents of file1 in the file2
    file_put_contents($file2, $fileContents1);
}

此外,您应检查您的文件是否可由网络服务器写入,即0666权限。

答案 1 :(得分:1)

您正在执行的操作仅适用于最多1000个字节的文件。另外 - 您正在使用“http://”打开要写入的第二个文件,这意味着fopen在内部将使用HTTP URL包装器。默认情况下,它们是只读的。您应该使用其本地路径fopen第二个文件。或者,为了使这更简单,你可以这样做:

$file1 = file_get_contents("/path/to/file1");
$path2 = "/path/to/file2";
$file2 = file_get_contents($path2);
if ($file1 !== $file2)
    file_put_contents($path2, $file1);