PHP:使用fopen()创建文件会导致字符串中出现“神秘”值,并重复使用现有文件

时间:2014-09-22 10:22:06

标签: php fopen

我正在尝试使用fopen()将长(> 700.000个字符串)字符串保存到服务器上的文件中。

$file = fopen($filename, 'w+');
fwrite($file, $content);
fclose($file);
echo $content;

但不知何故,这只会在文件已存在时产生正确的文件内容。 如果该文件不存在,则使用“神秘”内容创建,这对我没有任何意义。 (虽然$ content的回显显示正确的值)

文件的前几个字符示例:

  

当我重新加载脚本时,该文件已经存在,内容写得正确,并像以前一样正确回显。

这也有效,当我自己通过FTP创建文件时(无论之前有什么内容,我都尝试过“Hello”)。只要文件已经存在,一切都很好。

同样非常奇怪的是,如果我插入一个var_dump来查看$ content的值是在特定点,该文件是用正确的内容写的,但echo返回“神秘”字符串。 var_dump似乎总是具有正确的值。

我已经尝试使用几乎所有不同的fopen()模式,如'wb','wb +','wt','wt +','xt'等。 我整夜检查了路径,权限并搜索了谷歌。没有成功。

这让我大吃一惊,因为我看不出有什么问题或我想错过什么。

我希望你能帮助我。

非常感谢!

1 个答案:

答案 0 :(得分:0)

也许使用utf8_encode()

$content = utf8_encode("text dsdasasd"); 
$file = fopen($filename, 'w+');
fwrite($file, $content);
fclose($file);
echo $content;