это мой формат XML .ATOM канал. Я получаю следующие ПРЕДУПРЕЖДЕНИЯ.
Я сталкиваюсь с проблемами, пытаясь извлечь данные из URL-адреса ATOM, отобразить их в виде PHP-кода и сохранить в БАЗЕ ДАННЫХ. Я продолжаю получать эти ошибки …
Я пытался использовать loadfile
, curl
, vardump()
и ничего не получалось.
Предупреждение:
simplexml_load_file (https://colourpop.com/collections/all.atom):
не удалось открыть поток: HTTP-запрос не выполнен! HTTP / 1.1 403 Запрещено в
/public_html/ecomcharts/beta/indexproducts.php в строке 226Предупреждение: simplexml_load_file (): предупреждение ввода / вывода: не удалось загрузить внешний
юридическое лицо «https://colourpop.com/collections/all.atom» в
/public_html/ecomcharts/beta/indexproducts.php в строке 226 bool (false)Предупреждение: SimpleXMLElement :: __ construct (): Объект: строка 1: ошибка синтаксического анализатора
: Ожидается начальный тег ‘<не найден в
/public_html/ecomcharts/beta/indexproducts.php в строке 228Предупреждение: SimpleXMLElement :: __ construct ():
https://colourpop.com/collections/all.atom в
//ecomcharts/beta/indexproducts.php в строке 228
Я не уверен, что не так. Это мой код PHP:
<?php
$url = 'https://colourpop.com/collections/all.atom';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$data = curl_exec($curl);
curl_close($curl);
function download_page($path) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$path);
curl_setopt($ch, CURLOPT_FAILONERROR,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$retValue = curl_exec($ch);
curl_close($ch);
return $retValue;
}
$sXML = download_page('https://colourpop.com/collections/all.atom');
echo $sXML;
$xml=var_dump(simplexml_load_file('https://colourpop.com/collections/all.atom'));
$oXML = new SimpleXMLElement('https://colourpop.com/collections/all.atom');
foreach($oXML->entry as $oEntry) {
echo $oEntry->title . "\n";
}
?>
При создании элемента SimpleXMLE с помощью конструктора вы передаете содержимое файла, а не имя файла, так что в вашем случае …
<?php
$url = 'https://colourpop.com/collections/all.atom';
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYPEER => false // Disabled SSL Cert checks
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$sXML = curl_exec( $ch );
curl_close( $ch );
$oXML = new SimpleXMLElement ( $sXML );
foreach ( $oXML->entry as $oEntry ) {
echo $oEntry->title . "\n";
}
Это также устраняет проблемы с попыткой чтения HTTPS-страниц с помощью curl (с помощью метода CURLOPT_SSL_VERIFIER)
Других решений пока нет …