2015-11-04 91 views
1

simplexml_load_file()當URL包含&符號時不加載XML文件。我已經嘗試了兩個例子有和無符號:使用simplexml_load_file在URL中出現問題

$source1 = simplexml_load_file("http://www.isws.illinois.edu/warm/data/outgoing/nbska/datastream.aspx?id=ncu"); 
print_r($source1); //works 

$source2 = simplexml_load_file("http://forecast.weather.gov/MapClick.php?lat=38.8893&lon=-77.0494&unit=0&lg=english&FcstType=dwml");  
print_r($source2); //no output 

第一個例子效果很好,因爲它不包括符號,但因爲它包含符號的第二個例子是行不通的。

我參考了 simplexml_load_file with & (ampersand) in url with Solrsimplexml_load_file ampersand in url但它沒有工作。

回答

0

該問題不是URL中的&符號。相反,問題是weather.gov似乎阻止了這些類型的請求。他們不會允許沒有useragent設置的用戶。

來解決這個問題,最快的方式是在PHP中設置一個用戶代理,你可以通過把這段代碼上面的XML調用做到:

ini_set('user_agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0) Gecko/20100101 Firefox/9.0'); 

不過,我會建議使用捲曲,而不是使用simplexml_load_file,因爲simplexml_load_file通常受服務器配置的限制。如果你想用curl來做這件事,你會想要做一些像第一個答案這裏: SimpleXML user agent

我已經在本地進行了測試,並通過指定用戶代理得到它的工作。

編輯:另外,歡迎來到SO!務必經常投票; D