2013-05-31 44 views
0

替換其中的一個特定的字符目前,我有一個XML文件打開一個XML文件,並使用PHP

<?xml version="1.0" encoding="UTF-8"?> 
<Workflow xmlns="http://ns.adobe.com/acrobat/workflow/2012" title="HongKong2_Convert_img" description="" majorVersion="1" minorVersion="0"> 
<Sources>&lt;Folder path="/C/Source/HongKong2/temp"/&gt;</Sources> 
</Workflow> 

我想這樣做是<和&gt;,以取代&lt;>。

$handle = fopen('a.xml', "r+") or die(); 

while(!feof($handle)) { 
    if (strstr(fgets($handle),"&lt;") || strstr(fgets($handle),"&gt;")) { 
     echo 'tttt'; 
     fwrite($handle, str_replace("&lt;", "<", fgets($handle))); 
     fwrite($handle, str_replace("&gt;", ">", fgets($handle))); 
    } 
} 

fclose($handle); 

我可以觸發if條件,它應該是正確的。唯一的問題是它不能取代該行(與fwrite有一些問題)。如何解決這個問題?謝謝

回答

1
$handle = fopen('a.xml', "r+") or die(); 
$line = fgets($handle); 
while($line) { 
    if (strstr($line,"&lt;") || strstr($line,"&gt;")) { 
     echo 'tttt'; 
     $newline = str_replace("&lt;", "<", $line); 
     $newline = str_replace("&gt;", ">", $newline); 
     fwrite($handle, $newline); 
    } 
    $line = fgets($handle); 
} 

fclose($handle); 
1

你正在調用fgets多次,對結果無所作爲。每次調用fgets時,它都會從文件中讀取數據並推進文件指針。將fgets移到循環之外將值賦給變量並對變量進行測試