Это мой первый пост здесь. Я не уверен, что название моего сообщения является наиболее описательным способом показать мою проблему, извините заранее!
Во всяком случае, у меня есть RSS-канал Facebook на моем сайте, использующий simplepie — я показываю посты с кратким изложением его содержания и сопровождающим изображением, оба взяты из самого канала.
У меня есть один div, который отображает эту информацию и повторяется в соответствии с количеством историй, которые я установил для отображения, в моем случае 3, поэтому HTML-страница выводит три div, каждый с другой историей/сопровождающим изображением.
<div class="block">
<a href="<?php echo $image_url ?>" target="_blank">
<img src="<?php echo $image ?>" alt="" />
</a>
</div>
Проблема в том, что RSS-каналы Facebook показывают только крошечные эскизы, созданные из исходного изображения (либо внешнего, либо с сервера Facebook), но я хочу, чтобы они были в исходном разрешении.
Я успешно заменил миниатюры, поступающие с сервера Facebook, изменив имя изображения (с «something_s.jpg» на «something_n.jpg»):
$image = str_replace("_s.jpg", "_n.jpg", $image);
Я попытался с помощью ltrim удалить URL-адрес Facebook, добавленный перед URL-адресом внешнего изображения (например, https://fbexternal-a.akamaihd.net/safe_image.php?d=AQDZORAaPpbr5COr&w=154&h=154&url=http://example.com/image.jpg). Итак, я думал, что это сделает это:
$image = ltrim(stristr(str_replace("_s.jpg", "_n.jpg", $image), '&url='), '&url=');
Как ни странно, внешние изображения появлялись в исходном разрешении (например, example.com/image.jpg внутри <img src="">
), а изображения из Facebook (например, 10153970_10153145169383306_1966565627_n.jpg) больше не отображались. Атрибут img src просто пуст!
Что я здесь делаю неправильно? Любая помощь приветствуется.
(Кстати, это простой код на моей странице):
<?php
require_once('../php/autoloader.php');
$feed = new SimplePie();
$feed->set_feed_url(array('https://www.facebook.com/feeds/page.php?format=rss20&id=40796308305'));
$feed->set_item_limit(3);
$feed->init();
function returnImage ($text) {
$text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
$pattern = "/<img[^>]+\>/i";
preg_match($pattern, $text, $matches);
$text = $matches[0];
return $text;
}
function scrapeImage($text) {
$pattern = '/src=[\'"]?([^\'" >]+)[\'" >]/';
preg_match($pattern, $text, $link);
$link = $link[1];
$link = urldecode($link);
return $link;
}
$feed->strip_htmltags(array('embed','center','strong'));
$feed->handle_content_type();
foreach ($feed->get_items() as $item):
$feedDescription = $item->get_content();
$image = returnImage($feedDescription);
$image = scrapeImage($image);
$image = ltrim(stristr(str_replace("_s.jpg", "_n.jpg", $image), '&url='), '&url=');
$image_url= $item->get_permalink();
$description = $item->get_description();
$description = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $description);
endforeach;
?>