simplexml_load_file()
不会加载XML文件。我试过两个有和没有&符号的例子:
$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 Solr和simplexml_load_file ampersand in url但它不起作用。
答案 0 :(得分:0)
问题不在于URL中的&符号。相反,问题是weather.gov似乎阻止了这些类型的请求。他们不允许没有使用者设置的用户。
解决此问题的最快方法是在PHP中设置UserAgent,您可以将此代码放在xml调用之上:
ini_set('user_agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0) Gecko/20100101 Firefox/9.0');
但是,我建议使用CURL而不是simplexml_load_file,因为simplexml_load_file通常受服务器配置的限制。如果你是用卷曲来做这件事,你想做的事情就像第一个答案: SimpleXML user agent
我已在本地对此进行了测试,并通过指定用户代理使其正常工作。
编辑:另外,欢迎来到SO!一定要经常投票; D