2015-12-09 127 views
1

我想從「my-feed」中刪除XMP標記。這是來自Shopify的反饋,我無法將Shopify中的內容類型更改爲xml。它在xml周圍放出(xmp)和(/ xmp)。從xml中刪除<xmp>標記

我試過不同的方法,但我不明白,如果這是我的正則表達式多數民衆贊成在錯誤或如果它不可行。

<? 
$url = file_get_contents('http://domain.com/myfeed'); 
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/feeds/mynewfeed.xml","wb"); 

$url = preg_replace('/<\xmp[^>]+\/>', '', $url); 

fwrite($fp,$url); 
fclose($fp); 
?> 

的源代碼:

<xmp><?xml version="1.0"?> 
<products xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<product> 
    <category>Kjole</category> 
<area>0</area> 
... 
</xmp> 
+0

我們不知道來源是什麼樣子,因此會導致在猜測你在做什麼錯。一般來說,用正則表達式來分析xml是非常重要的。 – PeeHaa

+0

已添加源代碼。我也改變了preg_replace('/ <\xmp[^>] + \ />','',$ url); to $ url = preg_replace('/ <\xmp[^>] + \ />','',$ url);.現在,正則表達式消除了很多... – Anders

回答

0

嘗試:

<? 
$url = file_get_contents('http://domain.com/myfeed'); 
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/feeds/mynewfeed.xml","wb"); 

preg_replace('/<xmp>|<\/xmp>/', '', $url); 

fwrite($fp,$url); 
fclose($fp); 
?> 
+1

你搖滾!謝謝! – Anders

+0

與所有嘗試使用正則表達式處理XML的代碼一樣,當然這是錯誤的。例如,如果標籤包含空格,它將無法檢測到xmp元素,並且如果它們出現在CDATA部分中,它將不正確地檢測到它們。但也許它已經足夠好了 - 取決於你的質量要求。 –