2016-08-08 76 views
0

Der folgende PHP-Code zu vergleichen, funktioniert eine Datei zu lesen und den gleichen Inhalt in einer anderen Datei schreiben:PHP-Code lesen und schreibt fein Datei, bis ich ein Teilzeichen

<?php 

$input = @fopen("./temp.def", "r"); 
$output = @fopen("./temp.tpc","w"); 

if ($input) { 

    while (!feof($input)) { 
     $buffer = fgets($input); 
     fputs($output, $buffer); 
    } 
    if (!feof($input)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 

    fclose($input); 
    fclose($output); 

} 

Aber wenn ich Code hinzufügen, einige Inhalte zu ersetzen basierend darauf, ob ein Teilstring ein bestimmter Text ist oder nicht, funktioniert er nicht. Hier ist der Code für das:

<?php 

$input = @fopen("./temp.def", "r"); 
$output = @fopen("./temp.tpc","w"); 

if ($input) { 

    while (!feof($input)) { 
     $buffer = fgets($input); 

     //check to see if it is a `row` line 
     $isrow = mb_substr($buffer, 0, 5, 'UTF-8'); 
     if ($isrow == "row=:") { 
      $data = str_ireplace("row=:", "base=:[loc^nb]" . chr(10) . "row=:", $buffer); 
      else { 
       $data = $buffer; 
      } 
     } 

     fputs($output, $data); 
    } 
    if (!feof($input)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 

    fclose($input); 
    fclose($output); 

} 

Das einzige, was im Code geändert ist der zusätzliche Teil, gelb markiert, und der Name der Variablen ändern, markiert in blau ...

color-highlighted code

+1

'} sonst {' vielleicht ... – AbraCadaver

+0

Sie haben eine fehlplatzierte Klammer. Es gibt keinen zwischen der if-Anweisung und 'else', und darunter ist eine geschweifte Klammer. – aynber

+0

Ich bin hier nicht possitiv, aber ist 'str_ireplace()' Multi-Byte-Zeichensatz bewusst? – RiggsFolly

Antwort

0

Sie haben einige seltsame Verspannungen dort. Versuchen Sie:

if ($isrow == "row=:") { 
    $data = str_ireplace("row=:", "base=:[loc^nb]" . chr(10) . "row=:", $buffer); 
} else { 
    $data = $buffer; 
} 
+0

Arbeitete wie ein Zauber ... Danke Jungs. – larryb