2016-05-16 8 views
0

私は月ごとにフォルダを作成するディレクトリを作成しようとしています。私は自分のディレクトリをこのように設定したいと思います。ルート\サブフォルダ\月。月のフォルダの中に生成される毎日のレポートになります。私はこれをコード化するときに問題がありますが、私はuexpected '\'(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 - try /の有効なパス区切りではありません。 – CD001

+0

実行中のOSは? –

+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を使用することをお勧めし(ここに記載されている:http://php.net/manual/en/dir.constants.php)定数DIRECTORY_SEPARATOR代わりにバックスラッシュの.. $月

'\ボイド\ではドライバのチェックイン'。。ボイドの後に '\ボイド_'。日付( 'M-D-Y')。 "csvファイル"

バックスラッシュ\引用符を消費し、文字列の文字を閉じていない、文字列の一部としてそれを解釈します。

関連する問題