2016-05-16 103 views
0

我想创建一个目录,并为每个月创建一个文件夹。我希望我的目录像这样安装。根\子文件夹\月。月份文件夹内将会生成每日报告。我编码时遇到的问题是我收到语法错误,说有一个意想不到的'\'(T_NS_SEPARATOR)。我对此的代码看起来像这样。使用PHP创建一个目录

$month = date('M'); 
file('Driver Check In\Void\'.$month. '\Void_'.date('m-d-y').".csv"); 

我也有创建月份文件夹,如果它不存在的代码。

我该如何解决这个问题?

全码

if(isset($_POST['Void'])) 
{ 
    $month6 = date('M'); 
    $fp6 = file('Driver Check In\Void\\'.$month6. '\Void_'.date('m-d-y'). '.csv'); 
    $header6 = array("Date", "Customer", "Location/City", "Driver", "Cases", "Bottles", "Reason", "Comment"); 
    $dates6 = $_POST['dates6']; 
    $customer2 = $_POST['customer2']; 
    $location2 = $_POST['location2']; 
    $driver6 = $_POST['drivers6']; 
    $cases6 = $_POST['cases6']; 
    $bottles6 = $_POST['bottles6']; 
    $reason2 = $_POST['reason2']; 
    $comment2 = $_POST['comment2']; 
    $result6 = ''; 
    $search6 = "Date"; 
    $line_number6 = false; 

    while(list($key6, $line6) = each ($fp6) and !$line_number6) 
    { 
     $line_number6 = (strpos($line6, $search6) !== FALSE); 
    } 
    if($line_number6) 
    { 
     $result6 .= 
        $dates6. " ,". $customer2. " ,". $location2. " ,". $driver6. " ,". $cases6. " ,". $bottles6. " ,". $reason2. " ,". $comment2. "\r\n"; 
    } 
    else 
    { 
     $result6 .= implode(",", $header6). "\r\n". 
        $dates6. " ,". $customer2. " ,". $location2. " ,". $driver6. " ,". $cases6. " ,". $bottles6. " ,". $reason2. " ,". $comment2. "\r\n"; 
    } 
    if(!is_dir('Driver Check In\Void\\'.$month6)) 
    { 
     mkdir('\Driver Check In\Void\\'.$month6); 
    } 
    file_put_contents('Driver Check In\Void\\'.$month6. '\Void_'.date('m-d-y'). ".csv", $result6, FILE_APPEND); 
    echo "data added6"; 


} 
+0

\不是* nix中的有效路径分隔符 - 尝试/因为Windows并不挑剔并且会接受。 – CD001

+0

你在运行什么操作系统? –

+0

目前我正在Windows 7 x64 Pro机器上编写此代码。稍后,这将进入一个CentOs机器 –

回答

1

好吧,看起来您的'"展示位置中存在一些语法问题。知道\被认为是escape sequence也是很重要的,它会逃避标记后面的字符串。请尝试执行以下操作:

file('Driver Check In\\Void\\'.$month. '\\Void_'.date('m-d-y').'.csv'); 

您是否也考虑过mkdir函数?

+0

噢,好吧,我不知道它是否被认为是转义序列。谢谢你那个。我可以把我的整个代码放在一边,这样你就可以看到我是如何实现的。我确实有一个mkdir函数,但是如果该文件路径不存在,我只实现它。给我大约10-15分钟,我会发布我的代码,以便你可以看到。 –

+0

好的,你是否尝试用我提供的那个替换你的字符串?我不确定你是否仍然有问题。 –

+0

是的,我将其替换为您的产品,但没有收到错误消息。当我用你所拥有的东西取代之后,我确实收到了syntax.syntax错误,意外的'''''(T_CONSTANT_ENCAPSED_STRING)的错误信息。但是当我带走单个'时,错误消失了,但是我收到了警告消息说这个目录不存在 –

0

你逃避你反斜杠所以他们不会消耗你的报价。 我建议使用PHP常量DIRECTORY_SEPARATOR(在这里列出:http://php.net/manual/en/dir.constants.php)而不是反斜杠..

'驱动入住\虚空\' $一个月。 '\空隙_'。日期( 'M-d-Y')。 “CSV” 后空隙\

反斜杠消耗报价并把它解释为字符串的一部分,不关闭字符串的字符。