RSSやATOMなどのフィードを取得してWEBサイトに表示するようなサイトをPHPで作成しているんですがタイトルや概要などでは味気ないと思い、見出し画像なども一緒にWEBサイト表示したいのですが、はてなRSSリーダーのように「もっと読む」をクリックするとCDATAセクションなど全文を取得して表示する方法はわかるんですが例えば、

<content type="html" xml:lang="ja" xml:base="http://xxx.xxx.index.xml/">
<![CDATA[ 本文1 ]]>
   <![CDATA[ 本文2 ]]>
</content>
のような文書で<![CDATA[ 本文1 ]]>の部分だけ表示する方法はあるでしょうか?
先ほど書いたように<![CDATA[ 本文1 ]]><![CDATA[ 本文2 ]]>を取得して全文表示することはできます。参考になるサイトなどもあれば教えてください。

回答の条件
  • 1人2回まで
  • 登録:2007/10/10 12:01:45
  • 終了:2007/10/12 08:59:52

回答(2件)

id:wizemperor No.1

wizemperor回答回数379ベストアンサー獲得回数522007/10/10 19:34:11

ポイント53pt

content要素の内容は表示できるということなので、ごとに取り出すだけでできると思います。

// $contentにcontent要素の内容が入ってるものとする
$content = '<![CDATA[ 本文1 ]]><![CDATA[ 本文2 ]]>';

preg_match('/<!\[CDATA\[(.*?)\]\]>/', $content, $matches);
$intro = $matches[1];  // 本文1
$more = $matches[2];  // 本文2

echo htmlspecialchars($intro);
id:jinchangz

なるほど!

正規表現でこういう使い方があるんですね。

知りませんでした。この方法なら解決できそうです!ありがとうございます。

2007/10/12 08:53:03
id:larkmild2 No.2

larkmild2回答回数104ベストアンサー獲得回数22007/10/12 04:36:36

id:jinchangz

このサイトは前に見たことがあるんですけど

ちょっと自分の求めてる情報と違うんで

スルーしてました。お手数かけてすいません

2007/10/12 08:59:14
  • id:wizemperor
    ごめんなさい、ちょっと間違えてました。回答のものだとたぶんうまくいかないと思います。
    preg_matchじゃなくてpreg_match_allですね。


    // $contentにcontent要素の内容が入ってるものとする
    $content = '<![CDATA[ 本文1 ]]><![CDATA[ 本文2 ]]>';

    preg_match_all('/<!\[CDATA\[(.*?)\]\]>/', $content, $matches);
    $intro = $matches[0][1]; // 本文1
    $more = $matches[1][1]; // 本文2

    echo htmlspecialchars($intro);

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません