2017-03-02 7 views
0

ここでの目標は、my sitemap.xmlファイルの子要素のURLから "origin-"を削除することです。PHP - XMLファイルの要素から特定のテキストを削除する

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
    <loc> 
    http://origin-www.customURL.com 
    </loc> 
    <lastmod>2017-03-02</lastmod> 
    <changefreq>daily</changefreq> 
    <priority>0.0</priority> 
    </url> 
    <url> 
    <loc> 
    http://origin-www.customURL.com/11/2013/ 
    </loc> 
    <lastmod>2017-03-02</lastmod> 
    <changefreq>daily</changefreq> 
    <priority>0.0</priority> 
    </url> 
    <url> 
    <loc> 
    http://origin-www.customURL.comshopper-oxblood/11/2013/ 
    </loc> 
    <lastmod>2017-03-02</lastmod> 
    <changefreq>daily</changefreq> 
    <priority>0.0</priority> 
    </url> 
</urlset> 

私が使用しているPHPコードは、foreachループを実行するのに失敗しており、変更を加えずにファイルを出力しています。

これは私が要素を引くと「origin-」を削除するには、「str_replace」を使用しようとする試みで使用しているPHPのコードです:

<?php 

$xml = simplexml_load_file("sitemap.xml"); 

foreach ($xml->urlset->url->loc as $URL) 
{ 
     $incorrectTextURL = array("origin-"); 
     $onlyconsonants = str_replace($incorrectTextURL, "", $URL); 
} 
echo $xml->asXml(); 
?> 

私は私がここで何か間違ったことをやっている知っています、 'foreach'ステートメントは失敗し続け、ファイルは変更されません。

ありがとう任意の洞察力、 クリスに感謝

答えて

0

すなわち、あなたのforeach文で参照することにより&$URLを$のURLを渡すと、そのようにやってみてください。現在、あなたはをループさ

foreach ($xml->urlset->url->loc as &$URL) 
{ 
     $incorrectTextURL = array("origin-"); 
     $URL = str_replace($incorrectTextURL, "", $URL); 
} 

あなたのforeachは、実際のXMLのnodeValueを変更しないでください

+0

あなたの洞察力を賞賛しますが、意味がありますが私は同じエラーに遭遇しているようだ。 次のエラー行き方: PHPの警告:ライン上remove_text_from_url.phpに無効な引数がforeachのために供給を()で参照されている5 ラインが "foreachの" ラインである - > foreachの($ XML-> urlset-> URL - > locとして$ URL) – CLaB

+0

私はforeachの推薦で+&$ URLを捕まえていませんでした。残念なことに、一度追加されたように、私は追加された文字に関して別のエラーを出しています:PHP致命的なエラー: foreachで使用することはできません – CLaB

+0

あなたはどのPHPのバージョンを使用していますか? PHPの新しいバージョン(私は信じています)では、5.3.xであるためにエラーが発生していると仮定して参照して渡すことができます – skrilled

関連する問題