2017-10-25 1 views
1

Ich bin in der Lage, eine einzelne Zeile einer Datei (zB dummy.php) und ersetzen Sie sie durch einen Text in einer Variablen, genannt $currentdate, aber ich möchte mehrere Zeilen auswählen und ersetze sie durch mehrere Variablen. Zum Beispiel:PHP ersetzt mehrere Zeilen in einer Datei

$site_name in zweiter Linie,

$URL in der 4. Zeile,

$protocol in Zeile 6,

$author in Zeile 8,

$description in Zeile 10

Und $currentdate in Zeile 12

ich diesen Code gemacht haben, die zweite Zeile ersetzt:

 $currentdate = date('d F Y'); 
$filename = getcwd() . "/dummy.php"; 
$date_line = 1; 
$lines = file($filename , FILE_IGNORE_NEW_LINES); 
$lines[$date_line] = "$currentdate"; 
file_put_contents($filename , implode("\n", $lines)); 

ich die Frage wiederholen, wie mehrere Variablen in mehreren Zeilen dieser Geldbuße hinzufügen? Beispielvariablen und Zeilennummern sind in dieser Frage angegeben. Ich habe auch einen Code gemacht, aber ich weiß nicht, ob es funktioniert oder nicht. Ich kann nicht versuchen, diesen Code meinen Projektdateien hinzuzufügen, weil ich Angst davor habe, schlechter zu sein und andere Codes zu deaktivieren, die auch auf dieser Seite stehen. Hier ist der nicht getesteten Code:

$site_name_line = 1; 
$URL_line = 3; 
$protocol_line = 5; 
$author_line = 7; 
$description_line = 9; 
$currentdate_line = 11; 
$lines = file($filename , FILE_IGNORE_NEW_LINES); 
$lines[$site_name_line] = "$site_name"; 
$lines[$URL_line] = "$URL"; 
$lines[$protocol_line] = "$protocol"; 
$lines[$author_line] = "$author";$lines[$description_line] = "$description";$lines[$currentdate_line] = "$currentdate"; 
file_put_contents($filename , implode("\n", $lines)); 
+1

Also was ist die Frage, die Sie stellen möchten? – matiit

+0

@matit Wie fügt man mehrere Variablen in mehrere Zeilen ein? – user8783930

+0

Es wird sehr ähnlich aussehen, aber es wird flexibler sein. Versuchen Sie, darüber nachzudenken: Sie müssen eine Funktion schreiben, die zum Beispiel ein assoziatives Array mit Zeilennummern als Schlüssel und Ersetzungen als Werte enthält - dann müssen Sie Ihren Code in einer Schleife wiederholen, die über dieses Argument iteriert. – matiit

Antwort

1

Ich habe die Antwort selbst gefunden. Ich habe nicht gedacht, ich könnte. Aber ich habe es getan. Hier ist der ganze PHP-Code:

<?php 
if (isset($_POST['post'])){ 

// GET EMAIL 
     $site_name = $_POST["site_name"]; 
     $URL = $_POST["URL"]; 
     $protocol = $_POST["protocol"]; 
     $author = $_POST["author"]; 
     $description = $_POST["description"]; 
     $currentdate = date('d F Y'); 
$filename = getcwd() . "/dummy.php"; 
$site_name_line = 1; 
$URL_line = 3; 
$protocol_line = 5; 
$author_line = 7; 
$description_line = 9; 
$currentdate_line = 11; 
$lines = file($filename , FILE_IGNORE_NEW_LINES); 
$lines[$site_name_line] = "$site_name"; 
$lines[$URL_line] = "$URL"; 
$lines[$protocol_line] = "$protocol"; 
$lines[$author_line] = "$author";$lines[$description_line] = "$description";$lines[$currentdate_line] = "$currentdate"; 
file_put_contents($filename , implode("\n", $lines)); 
} 
?> 
0
/** 
* Replace lines with given content. 
    * 
    * $substitutions array should look 
    * [ 
    * 1 => "new first line content", 
    * 4 => "new fourth line content", 
    * ] 
    * 
    * @param string $filename 
    * @param array $substitutions 
    */ 
    function replaceLines($filename, array $substitutions) { 
    $lines = file($filename); 

    foreach ($lines as $lineNumber => $lineContent) { 
     if (isset($substitutions[$lineNumber])) { 
      $lines[$lineNumber] = $substitutions[$lineNumber]; 
     } 
    } 

    file_put_contents($filename, $lines); 
} 

Dies ist natürlich behandelt nicht alle möglichen Grenzfälle wie zum Beispiel, wenn Sie keinen Zugriff auf die Datei haben, oder wenn Sie geben eine nicht vorhandene Zeile in Substitutionsarray ein.

+1

Ich habe die Antwort auf andere Weise gefunden. Aber ich schätze immer noch deine harte Arbeit. Ich werde deine Antwort zuerst annehmen und dann min. Nun, vielen Dank. – user8783930

+0

Ist jemand meine Frage unpassend/duplicate/nicht im Zusammenhang mit SO, dann bitte sagen Sie mir, diese Frage zu löschen, nicht nach unten stimmen. Weil ich nur ein wenig repetiere. Wenn du abstimmst, kann ich keine Fragen mehr stellen. – user8783930

+0

Wenn Sie ding, meine Frage ist gut und nützlich für andere, dann bitte upvote, so dass es eine gute Unterstützung sein wird – user8783930

Verwandte Themen