0

目前我有一个 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;用 < 和&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 的一些问题..)。如何解决?谢谢

4

2 回答 2

1

您多次调用 fgets 并且对结果不做任何事情。每次调用 fgets 时,它都会从文件中读取并推进文件指针。将 fgets 移到循环之外,将值分配给变量并针对变量进行测试

于 2013-05-31T02:56:39.583 回答
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);
于 2013-05-31T03:00:32.310 回答