XML(feed)の中に特定の文字列があった場合のみ表示させるPHP


お世話になります。以下の条件でPHPを書きたく、サンプルをいただけないでしょうか。

■やりたいこと
・XML(とあるブログのFeed、同じサーバ上にはない)を読み込む
・読み込んだFeedの中に特定の文字列が入っていたら、HTML上に表示

■例
ブログのフィード: http://hoge.com/feed
探したい文字列:山田
出力結果:
1月1日の日記
山田花子

1月3日の日記
山田太郎
……

->作者に「山田」が含まれる記事をフィルタして表示。
->HTML上に何(日付や作者名など)を表示させるかはこちらでできるため適当で構いません


お手数をお掛けしますが、何卒よろしくお願い致します。

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2016/02/07 16:41:39
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント500pt

その Feed が ATOM 形式のものだとして、例えば、summary に「山田」が含まれているかどうかを判定する場合は、こんな感じ。

<?php
require "simple_html_dom.php";

// DOM を展開
$html = file_get_html('http://hoge.com/feed');

// <summary> を探す
$summary_list = $html->find('summary');

foreach ($summary_list as $summary) {
    
    // <summary> に「山田」が含まれているか?
    if (preg_match('/山田/', $summary->plaintext)) {

        // <entry> は <summary> の親要素
        $entry = $summary->parent();

        // 必要な要素を取得
        $title = $entry->find('title')[0];
        $date = $entry->find('published')[0];
        ...

        // ここで内容を表示
        echo $title->plaintext. "<br>";
        echo $date->plaintext . "<br>";
        ...
    }
}

お手軽なところで、Simple HTML DOM を使いました。
http://simplehtmldom.sourceforge.net/

id:cafe-beret

やりたかったことが完璧にできました。
ほんとうに助かりました。ありがとうございます。

2016/02/07 16:42:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません