PHP: прочитайте php url как xml и проанализируйте его

У меня есть URL-адрес, подобный этому http://somedomain.com/frieventexport.php и содержимое этого URL-адреса является простой структурой XML, если я проверяю исходный код сайта:

введите описание изображения здесь

Как я могу разобрать этот URL-адрес и использовать его в PHP? Этот скрипт дает мне ошибку … «Ошибка загрузки XML».

 <?php $xml_url = "http://somedomain.com/frieventexport.php"; if (($response_xml_data = file_get_contents($xml_url))===false){ echo "Error fetching XML\n"; } else { libxml_use_internal_errors(true); $data = simplexml_load_string($response_xml_data); if (!$data) { echo "Error loading XML\n"; foreach(libxml_get_errors() as $error) { echo "\t", $error->message; } } else { print_r($data); } } ?> 

На мой взгляд, одним из лучших вариантов является использование CURL для получения необработанных данных XML из URL:

 $curl = curl_init(); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $curl, CURLOPT_URL, "http://somedomain.com/frieventexport.php" ); $xml = curl_exec( $curl ); curl_close( $curl ); 

Затем вы можете использовать DOMDocument для анализа xml:

 $document = new DOMDocument; $document->loadXML( $xml ); 

Я бы также рекомендовал использовать теги <![CDATA[]> в вашем XML. Пожалуйста, прочитайте следующее:

  • Что означает <![CDATA[]]> в XML?
  • Разделы CDATA в XML

Дополнительная информация о DOMDocument и использовании

  • Документация DOMDocument PHP.net
  • Пример DOMDocument W3Schools

file_get_contents() обычно отключается, если это общий хостинг, если вы не можете установить allow_url_fopen в php.ini (однако остерегайтесь рисков безопасности). Вы можете проверить настройку этого, используя php_info() или var_dump(ini_get('allow_url_fopen')) чтобы показать, разрешено или нет.

Если вы не можете сделать это, вы можете использовать CURL для извлечения внешнего содержимого

Попробуйте следующее:

 $url = 'xml-file.xml'; $xml = simplexml_load_file($url); print_r($xml); 

Попробуй это :

 $livescore_data = new SimpleXMLElement($file);