2015-11-04 114 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

相关问题