запрос cURL для выпуска ленты .ATOM

это мой формат 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";
}
?>

-1

Решение

При создании элемента 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)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]