2017-03-02 98 views
0

我的目標是從我的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> 

我使用的是無法運行foreach循環,並輸出沒有進行更改文件的PHP代碼。

這是PHP代碼,我使用的企圖拉元素,並使用「str_replace函數」刪除「成份,其中」:

<?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節點價值

+0

欣賞你的洞察力,確實有道理,但它確實似乎我遇到了同樣的錯誤。 得到以下錯誤: PHP警告:提供的foreach無效參數()在remove_text_from_url.php第5行 線被引用的是 「的foreach」 線 - >的foreach($ XML-> urlset-> URL- > loc作爲$ URL) – CLaB

+0

道歉我沒有在foreach推薦中發現&+ $ URL,不過很不幸,因爲一旦添加,我收到了與添加字符不同的錯誤:PHP致命錯誤:迭代器不能與foreach一起使用 – CLaB

+0

您使用的是哪個版本的PHP?在較新版本的PHP中(5.6+我相信),你可以通過引用傳遞,假設你的錯誤是因爲你的5.3.x – skrilled