開発中のローカルイントラネットサイトがあり、他のサイトからのrssフィードを表示したいと考えています。現在、Concrete5 CMSに基づいて構築されており、RSSディスプレイプラグインを使用してフィードを表示しています。プラグインはSimplePieを使用してフィードを解析します。デフォルトでは、プラグインはRSSコンテンツ全体を表示します。プラグイン(SimplePie)を微調整して、リンク、日付、および各投稿/エントリの最初の画像を含むタイトルのみを表示するようにしました。$item->get_content()
最初の画像のソースを取得するために渡すこの関数を見つけました。
function getFirstImage($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;
}
これは正常に機能します。問題は、一部のフィードに実際の投稿コンテンツの前に配置されることがある広告が含まれていることです。したがって、この関数は広告のURLを返します。明らかに、これらのRSS広告は、rssリーダーを使用する人々を対象としていますが、サイトに表示するためには非常に煩わしいものです。
<img>
内以外の正確なタグをターゲットにしようとするとpreg_match()
、タグを取得した特定のフィードに対してのみ機能すると思います。(たとえば、タグpreg_match()
内の画像のみを検索するために使用しようとした場合)<p>
表示したいフィードごとにコードを変更せずに、広告ではない実際の投稿から最初の画像を取得するにはどうすればよいですか?