Я пытаюсь разобрать 2 URL-адреса, используя PHP DOM. Мне интересно, может ли кто-нибудь дать мне представление о том, где я ошибся? Разве не удается проанализировать оба URL-адреса, как я сделал ниже?
<?php
$html = file_get_contents('http://www.reddit.com/r/funny');
$html2 = file_get_contents('http://www.9gag.com/');
$dom = new DOMDocument();
@$dom->loadHTML($html.$html2);
$xpath = new DOMXPath($dom);
$hyperlinks = $xpath->evaluate('//a[@class="thumbnail "]');
$hyperlinks2 = $xpath->evaluate('//a[@class="badge-item-img"]');
foreach($hyperlinks as $hyperlink) {
if(strpos($hyperlink->getAttribute('href'), 'http://i.imgur.com/') !== FALSE){
echo "<img style='padding-left:30%' width=\"500\" src=\"" . $hyperlink->getAttribute('href') . "\" alt=\"\" />";
echo "<br>";
echo "<br>";
echo "<br>";
}
else{
echo "";
}
}
?>
EDIT Это изменение было добавлено, поскольку я пытаюсь выполнить сравнение для класса = "значок-элемент-img", и он ничего не возвращает. Разве это невозможно сделать так, как я это делаю?
<?php
// Init the '$url_array' array.
$url_array = array();
$url_array[] = 'http://www.reddit.com/r/funny';
$url_array[] = 'http://www.9gag.com/';
// Init the return '$ret' array.
$ret = array();
// Roll through the '$url_array' array.
foreach ($url_array as $url_value) {
$html = file_get_contents($url_value);
$dom = new DOMDocument();
$dom2 = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$xpath2 = new DOMXPath($dom2);
$hyperlinks = $xpath->evaluate('//a[@class="thumbnail "]');
$hyperlinks2 = $xpath2->evaluate('//a[@class="badge-item-img"]');
foreach($hyperlinks as $hyperlink) {
if(strpos($hyperlink->getAttribute('href'), 'http://i.imgur.com/') !== FALSE){
$ret[] = "<img style='padding-left:30%' width=\"500\" src=\"" . $hyperlink->getAttribute('href') . "\" alt=\"\" />"
. "<br>"
. "<br>"
. "<br>"
;
}
foreach($hyperlinks2 as $hyperlinker) {
$ret[] = "<img style='padding-left:30%' width=\"500\" src=\"" . $hyperlinker->getAttribute('href') . "\" alt=\"\" />"
. "<br>"
. "<br>"
. "<br>"
;
}
}
}
// Roll through the '$ret' array.
foreach($ret as $ret_value) {
echo $ret_value;
}
Похоже, вы пытаетесь совместить содержимое одного HTML файла поверх другого. Который закончится тем документом, который, скорее всего, задушит парсер DOM. Вместо этого вы должны прокрутить URL-адреса и затем вывести результаты:
<?php
// Init the '$url_array' array.
$url_array = array();
$url_array[] = 'http://www.reddit.com/r/funny';
$url_array[] = 'http://www.9gag.com/';
// Init the return '$ret' array.
$ret = array();
// Roll through the '$url_array' array.
foreach ($url_array as $url_value) {
$html = file_get_contents($url_value);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$hyperlinks = $xpath->evaluate('//a[@class="thumbnail "]');
$hyperlinks2 = $xpath->evaluate('//a[@class="badge-item-img"]');
foreach($hyperlinks as $hyperlink) {
if(strpos($hyperlink->getAttribute('href'), 'http://i.imgur.com/') !== FALSE){
$ret[] = "<img style='padding-left:30%' width=\"500\" src=\"" . $hyperlink->getAttribute('href') . "\" alt=\"\" />"
. "<br>"
. "<br>"
. "<br>"
;
}
}
}
// Roll through the '$ret' array.
foreach($ret as $ret_value) {
echo $ret_value;
}
?>
Я не уверен, что вижу проблему. Я тестировал этот код локально, и он работает. Вы получаете какую-то ошибку?