如何使用php替换特殊的xml标记
我有这样一个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 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");