2013-01-21 122 views
1

我曾與含有這種特殊字符&一個url變量中的XML文件,=等通過URL特殊字符捲曲

我有兩個問題:

A.由於特殊字符是不是允許使用XML,我應該如何輸入URL?我應該編碼的網址,然後把XML文件?

B.假設我編碼url並將其放入XML文件中,然後在php腳本中讀取。

$fxml = simplexml_load_file("mylist.xml"); 
$fxml -> getName(); 

foreach($fxml->children() as $mylist) 
    { 
     $url = $mylist -> url; 
     $url = urldecode(url); 
     echo $url; 

     $feed = curl_init($url); 
     curl_setopt($feed, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($feed, CURLOPT_HEADER, 0); 
     $xml = simplexml_load_string(curl_exec($feed)); 

     curl_close($feed); 
     //--------------------- 
     //--------------------- 
} 

下面是示例XML文件:我已經取代了原來的地方是&通過它的代碼替換編碼形式的URL

<?xml version="1.0" encoding="UTF-8"?> 
    <feed> 
     <mylist> 
      <name>                                              
      SISC                                              
      </name> 
      <url>                                              
      http://epubs.siam.org/action/showFeed?ui=0&amp;mi=3chvf9&amp;ai=s0&amp;jc=sjnaam&amp;type=etoc&amp;feed=rss                    
      </url> 
     </mylist> 
    </feed> 

通知。我也嘗試不使用urldecode,但我只正確地得到echo $ url。

如果我將url粘貼到curl_init($ url)的單引號下,everthing就可以工作。

但是,當我編碼的網址,並把它放在XML和解碼回來,並把它放在curl_init($ url),它不起作用。

當我回應解碼的$ url(見上面),然後我得到正確的URL列表顯示。我究竟做錯了什麼 ? 我讀了密切相關的帖子,但無法解決這個問題。

回答

1

爲了舉例,我們使用&

如果您想在URL的數據中使用&(而不是指示新查詢字符串鍵/對的開始)。然後,在將URL添加到URL之前,您需要對其進行網址編碼(如%26)。

如果您想在一個XML文檔的數據中使用&(例如,如果數據是一個包含查詢字符串的URL),那麼您需要對其進行XML編碼(如&amp;)。您應該使用XML庫構建XML(而不是字符串抨擊或模板),並且該庫將爲您處理它。

您應該而不是必須urldecode您在將XML用作URL之前取出的數據。

+0

沒有成功。我添加了上面的XML文件。我使用了轉換器來更改&到XML代碼。我嘗試不使用urldecode,但沒有成功。如果我複製粘貼在curl_init中回顯的$ url一切正常。 – user1997305

+0

你不應該需要urldecode。我懷疑你可能在數據中包含URL的空白。 – Quentin

+0

是的,你知道了。在我的XML中,我寫了,url和分別在三行上,這就導致了url的空白。一旦我把它們全部保存在一行 url_link一切正常。非常感謝! PS:爲了清晰和簡單的複製粘貼(在emacs中),我想將url保存在單獨的行中。 – user1997305