XML ファイルをループします。特定のノードを見つけたら、その値を取得して、ドキュメント全体で出現するすべてのノードを変更します。
XML
<?xml version="1.0" encoding="UTF-8"?>
<catalog catalog-id="my_catalog">
<product product-id="11111111">
......
<new-id>aaaaaaa</new-id>
</product>
<product product-id="2222222">
......
<new-id>bbbbbbb</new-id>
</product>
</catalog>
それぞれについて、それを置き換える必要があることがわかっ<product>
た場合はそれで問題ありませんが、XML ドキュメント全体ですべての出現箇所を置き換える必要もあります。<new-id>
<product product-id="">
11111111
aaaaaaa
PHP
$cotalog = new SimpleXMLElement($file);
header('Content-Type: text/xml');
foreach ($cotalog as $product) {
if ($product->getName() == 'product') {
$product['product-id'] = $product->{'new-id'};
// code here to replace all occurrences of $product['product-id'] with $product->{'new-id'}
...
}
}
echo $cotalog->asXML();
str_replace
文字列値のすべての出現箇所を別の文字列に置き換える方法はありますか?