У меня есть этот код как часть плагина, и, хотя он отлично получает информацию с какого-то веб-сайта, существует довольно много сайтов, на которые не попадает указанное изображение, в том числе Amazon.Что мне нужно изменить в коде, чтобы сделать его более удобным для Amazon?
Если честно, я не пытался изменить код, потому что не знал, с чего начать.
function process_link(){
$url = $_POST["url"];
$data = file_get_contents($url);
if(!$data){
echo "error";
}
$dom = new DomDocument;
@$dom->loadHTML(mb_convert_encoding($data, 'HTML-ENTITIES', 'UTF-8'));
$xpath = new DOMXPath($dom);
$metas = $xpath->query('//*/meta[starts-with(@property, \'og:\')]');
$og = array();
foreach($metas as $meta){
$property = str_replace('og:', '', $meta->getAttribute('property'));
$content = $meta->getAttribute('content');
$og[$property] = $content;
}
$otherMeta = get_meta_tags($url);
if(!array_key_exists("description", $og)){
if(array_key_exists("description", $otherMeta)){
$og["description"] = $otherMeta["description"];
}else{
$start = strpos($data, '<p>');
$end = strpos($data, '</p>', $start);
$og["description"] = strip_tags(substr($data, $start, $end-$start+4));
}
}
if(!array_key_exists("title", $og)){
$matches = array();
if (preg_match("/<title.*?>[\n\r\s]*(.*)[\n\r\s]*<\/title>/", $data, $matches)) {
$og["title"] = $matches[1];
}
}
if(!array_key_exists("image", $og)){
preg_match_all('/<img[^>]+>/i',$data, $result);
$og["images"] = $result;
}
echo json_encode($og);
exit();
}
Я ожидаю, что изображения будут возвращены, но для некоторых сайтов их просто нет.