Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php替换特殊的xml标记_Php_Xml_Replace_Tags - Fatal编程技术网

如何使用php替换特殊的xml标记

如何使用php替换特殊的xml标记,php,xml,replace,tags,Php,Xml,Replace,Tags,我有这样一个xml文件: <?xml version="1.0"?> <datas> <books> <book> <id>1</id> <title>PHP Undercover</title> <author>Wiwit Siswoutomo</author> </book>`enter code here` <book> <id&

我有这样一个xml文件:

<?xml version="1.0"?>
<datas>
<books> 
<book>
<id>1</id>
<title>PHP Undercover</title>     
<author>Wiwit Siswoutomo</author>
</book>`enter code here`
<book>
<id>2</id>
<title>PHP Enterprise</title>     
<author>Wiwit Siswoutomo</author>
</book>
</books>
</datas>

1.
PHP卧底
Wiwit Siswoutomo
`在这里输入代码`
2.
PHP企业
Wiwit Siswoutomo
现在我想用这种方式替换一个特殊的标签: 搜索xml文件,如果它有一个PHP企业,找到它并用“新标题”替换它。 我该怎么办?
TNX

此脚本将帮助您!!试试这个:)


您可以使用SimpleXML解析文档:

$datas = new SimpleXMLElement("my.xml");
foreach ($datas->books->book as $book) {
    if (preg_match('/PHP Enterprise/', $book->title) {
       $book->title = "new title";
    }
}

$datas->asXML("my.xml");

谢谢你的回答,但是,这个解决方案有很重的负载,如果我的xml文件很大,这种方式需要很长时间。你能推荐一个更好的功能吗?tnx@sepidehfaraji我已经修改了我的脚本,并添加了其他功能,但这并不完全符合您的文件,但我希望我会帮助您!
<users>
     <name>John</name>
     <address>My Address</address>
     <zipcode>12345</zipcode>
     <city>My City</city>
     <phone>555 1234-4321</phone>
</users>
fopen('users.xml');
while ($users->read()) {
     switch ($users->nodeType) {
          case (XMLReader::ELEMENT):
               if ($users->localName == "users") {
             $node = $reader->expand();
             $dom = new DomDocument();
             $n = $dom->importNode($node,true);
             $dom->appendChild($n);
             $simple_xml = simplexml_import_dom($n);
             $id = $simple_xml['id'];
             $name = $simple_xml->name;
             $address = $simple_xml->address;
                     // Custom code insert, update, whatever...
               }
     }
}
$datas = new SimpleXMLElement("my.xml");
foreach ($datas->books->book as $book) {
    if (preg_match('/PHP Enterprise/', $book->title) {
       $book->title = "new title";
    }
}

$datas->asXML("my.xml");