2009-07-24 8 views
1

Ich habe eine Textdatei Qfile.txt und der Inhalt folgt, und möchte eine andere Datei mit den gleichen Informationen erstellen und aber die Antworten sind unterschiedlich. Qfile1.txt, Qfile2.txtWarum schlägt mein preg_replace() für mehrzeilige Dateiinhalte unter Windows fehl?

Qfile.txt

Question "What is your age?" 
Answer "" 

Question "What you doing?" 
Answer "" 

Question "What is you name?" 
Answer "" 

Qfile1.txt

Question "What is your age?" 
Answer "25" 

Question "What you doing?" 
Answer "chatting" 

Question "What is you name?" 
Answer "Midhun" 

Ich möchte die Fragen aus dem Qfile.txt lesen und speichern Sie die Informationen zu Qfile1.txt mit in PHP. Ich schrieb einige Code, aber das Pattern-Matching nicht funktioniert:

$contents=file_get_contents("Qfile.txt"); 
foreach(/*bla bla*/) 
{ 
    $pattern = "/Question \"".preg_quote($id, '/')."\"\nAnswer \"\"/"; 

    $string = str_replace('"', '\"', $string); 

    $replacement = "Question \"$id\"\nAnswer \"". $string . "\""; 

    $result = preg_replace($pattern, $replacement, $contents); 
} 

Die preg_replace($pattern, $replacement, $contents); funktioniert nicht.

Antwort

3

Replikation nicht möglich; Ihr Code, passend angepasst, funktioniert eigentlich gut für mich. Das einzige, was mir einfällt, ist, dass Sie das vielleicht auf einem Windows-Rechner schreiben und Ihre Textdatei CRLF-Zeilenabschlüsse hat. In diesem Fall würden Sie den Code ändern müssen:

$contents=file_get_contents("Qfile.txt"); 
foreach(/*bla bla*/) 
{ 
    $pattern = "/Question \"".preg_quote($id, '/')."\"(\r?\n)Answer \"\"/"; 

    $string = str_replace('"', '\"', $string); 

    $replacement = "Question \"$id\"$1Answer \"". $string . "\""; 

    $result = preg_replace($pattern, $replacement, $contents); 
} 

Die Änderungen sind auf den $pattern = und $replacement = Linien. Ich habe es so geschrieben, dass es beibehalten wird, welches Linienabschlussmuster vorhanden ist (von den zwei, die es unterstützt, LF und CRLF).

+0

ja arbeite auf Windows-Maschine. – coderex

+0

Das ist dann dein Problem. Ändern Sie Ihren Code wie oben beschrieben und das sollte behoben werden. – chaos

+0

ja seine Arbeit tanQz viel :) – coderex

Verwandte Themen