打开XML文件并使用PHP替换其中的特定字符

时间:2013-05-31 02:49:25

标签: php xml file-io fopen fwrite

目前我有一个XML文件

<?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>

我想要做的是用&lt;替换&lt;&gt;与&gt; 。

$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的一些问题..)。如何解决?感谢

2 个答案:

答案 0 :(得分:1)

您多次调用fgets并且不对结果执行任何操作。每次调用fgets时,它都会从文件中读取并前进文件指针。将fgets移动到循环之外将值赋给变量并针对变量进行测试

答案 1 :(得分: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);