Проблема с & в URL с использованием simplexml_load_file

1

simplexml_load_file() не загружает XML файл, когда 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 с помощью & (амперсанд) в url с параметрами Solr и simplexml_load_file ampersand в url, но это не сработало.

Теги:

1 ответ

0
Лучший ответ

Проблема заключается не в амперсанде в URL-адресе. Проблема заключается в том, что weather.gov, по-видимому, блокирует эти типы запросов. Они не позволят пользователям, у которых нет набора useragent.

Самый быстрый способ обойти это - установить UserAgent в PHP, который вы можете сделать, поставив этот код над вашим вызовом 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

Я проверил это локально и получил его, просто указав агент пользователя.

EDIT: Также, добро пожаловать в SO! Обязательно проголосуйте часто; D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню