2017-08-29 1 views
-2

Ich schreibe eine Datei, die plan.php ist. Es ist eine PHP-Datei, die ich schreibe. Ich verwende \n, um die neue Zeile in diese Datei einzufügen, aber es gibt mir eine sichere Ausgabe.Wie füge ich neue Zeile in PHP-Datei fwrite

Hier Code:

$datetime = 'Monthly'; 
$expiry = '2017-08-07'; 
$expiryin = str_replace('ly', '',$datetime); 
if($expiryin == 'Month' || $expiryin == 'Year') { 
    $time = '+ 1'.$expiryin.'s'; 
} else { 
    $time = '+'.$expiryin.'s'; 
} 
    $expiry_date = date('Y-m-d', strtotime($time, strtotime($expiry))); 

$string = createConfigString($expiry_date); 

$file = 'plan.php'; 
$handle = fopen($file, 'w') or die('Cannot open file: '.$file); 
fwrite($handle, $string); 

und die Funktion ist:

function createConfigString($dates){ 
    global $globalval; 

    $str = '<?php \n\n'; 
    $configarray = array('cust_code','Auto_Renew','admin_name'); 
    foreach($configarray as $val){ 
      $str .= '$data["'.$val.'"] = "'.$globalval[$val].'"; \n'; 
    } 
    $str .= '\n'; 
    return $str; 
} 

Aber es gibt den Ausgang wie:

<?php .......something....\n.....\n 

Also meine Frage ist, wie das setzen neue Zeile in dieser Datei.

Hinweis: Es gibt keinen Fehler im Code. Ich habe den Code hier minimiert.

+5

Ersetzen Sie ' '\ n'' auf' "\ n" '. Und lies mal ein Handbuch. Sie können sogar 'PHP_EOL' konstant verwenden. –

+0

@u_mulder Nach dem Ersetzen gibt es mir Fehler, da ich '$' am Anfang der Zeichenfolge verwende. –

+2

Sie können 'PHP_EOL' auch als Alternative anstelle von' \ n' verwenden. –

Antwort

2

Wie jeder schon erwähnt '\n' ist nur zwei Symbole String \n.

Sie müssen entweder einen "\n" oder PHP Kern konstant PHP_EOL:

function createConfigString($dates){ 
    global $globalval; 

    // change here 
    $str = '<?php ' . PHP_EOL . PHP_EOL; 
    $configarray = array('cust_code','Auto_Renew','admin_name'); 
    foreach($configarray as $val){ 
     // change here 
     $str .= '$data["'.$val.'"] = "'.$globalval[$val].'";' . PHP_EOL; 
    } 
    // change here 
    $str .= PHP_EOL; 
    return $str; 
} 

Mehr Infos über die Interpretation von Sonderzeichen in Strings http://php.net/manual/en/language.types.string.php#language.types.string.syntax.double

1

Wenn Sie \n innerhalb eines Strings in einfachen Anführungszeichen ($var = '\n';) verwenden, ist es, dass gerade sein - die Literal-Zeichenfolge \n, und kein Newline. Damit PHP interpretiert, dass es eigentlich eine Newline sein soll, müssen Sie doublequotes ($var = "\n";) verwenden.

$var = '\n';  // The litteral string \n 
$var = "\n";  // Newline 
0

\n in einfache Anführungszeichen nicht wie '\n' arbeiten. Sie müssen doppelte Anführungszeichen verwenden "\n". Also für Ihren Zweck, die Änderung müssen Sie machen, ist:

function createConfigString($dates){ 
    global $globalval; 

    $str = '<?php \n\n'; 
    $configarray = array('cust_code','Auto_Renew','admin_name'); 
    foreach($configarray as $val){ 
     $str .= "$data['".$val."'] = '".$globalval[$val]."'; \n"; // change places of double and single quotes 
    } 
    $str .= "\n"; // change places of double and single quotes 
    return $str; 
} 
Verwandte Themen