我目前正在处理这个项目,该项目要求我创建一个函数,该函数以dinamically方式决定目录名称,然后在该目录中创建一个简单的.txt文件。
我的代码如下: ($ destinatario是一个字符串)
$diretorio="../messages/".$destinatario;
if (is_dir($diretorio)) {
;
}else{
mkdir($diretorio);
}
$path=$diretorio."/".$data.",".$assunto.",".$remetente.".txt";
$handle=fopen($path,'w+');
fwrite($handle, $corpo);
fclose($handle);
没关系葡萄牙语,但最重要的是它应该使用我提供的命名指南创建一个.txt文件。有趣的是,当我这样做时,php创建了这个奇怪的文件,其文件名为“01.09.2010 04” (根本没有扩展名),这相当于我想创建的实际文件名的前几个字符......
编辑($ data实际上是日期调用的输出(“d.m.Y H:i”))
答案 0 :(得分:4)
[$ data is]实际上是日期调用的输出(“d.m.Y H:i”)
问题是:
字符。(但是,组成最终文件名的其他部分可能还有其他非法字符。)
修改强>
问题和解决方案的本质是对@tchen's answer的评论。请记住,冒号是(某些?所有?)* nix平台上的有效文件名字符,但在Windows上无效。
答案 1 :(得分:1)
确保$ data末尾没有坏字符。在上面调用trim()。
如果它是从文件中获取的数据,它的末尾可能有'\ r'或'\ n'。
答案 2 :(得分:0)
不相关,但请确保您的if语句没有未使用的条件:
if (!is_dir($diretorio)) {
mkdir($diretorio);
}
这也将摆脱带有单个终结符;
的空白行,我确信这是不对的。
答案 3 :(得分:0)
一些想法:
试图找出问题
你也可以简化为:
if (!is_dir($diretorio)) {
mkdir($diretorio);
}