RSSから画像の取り込みで正規表現がわかりません preg_match - PHPプロ!Q&A掲示板
1544
- 300P
- 300P
RSSから画像の取り込みで正規表現がわかりません preg_match
質問日時 / 2008年10月9日 02:52 (最終編集:10月9日 22:29) 回答数 / 12件
Questioner: yumisaiki
Tweet
キーワード / 正規表現  
で教えていただいた、ブログの記事を取得するのは本当に便利に使っています。
で、ぶろぐん も加工をほどこして、これでいつも使っています。
http://池田久美.jp/
が使用中の例です。本当にありがとうございます。
で、この画面に、せっかくのお人形さんの可愛い写真をできたらランダムで表示できるようにしたいなと思い、
さっそく加工に挑戦しようと思ったのですが、さっそく正規表現でつまづいています。
いくらやっても/が多いというエラーになります。
http://ikekumi.lovepop.jp/bg/?mode=rss&c=3-2
の写真を取得したいのです。
例えば
<img src="http://ikekumi.lovepop.jp/bg/files/20080521143814.JPG" width="320" height="240" alt="" />
を表示させたいのです。
で、とりあえず以下のようなものを作ってみました。
- // RSS番号
- $num = $_GET["rssno"];
- // URLの指定
- $rdf_url = "http://ikekumi.lovepop.jp/bg/?mode=rss&c=".$num;
- // RSSを取得
- $content = file_get_contents($rdf_url);
- // rdfを解析する (下の関数で処理)
- $datas = analyze_rdf($content);
- // rdf ファイルを解析するための関数
- function analyze_rdf($cnt) {
- // <item> ~ </item> を切り出す
- $ptn = '/<item[^>]*>(.+)<\/item>/sU';
- preg_match_all($ptn, $cnt, $matches);
- // マッチしてれば
- if (count($matches) > 0) {
- // 配列に入れる
- $items = $matches[1];
- } else {
- return FALSE;
- }
- // パターンの指定
- $ptns["img"] = '/<img[\s\t]+src[\s\t]*=[\s\t]*"http://ikekumi\.lovepop\.jp\/bg\/files\/\d+\.jpg)"[^\/>]*?\?>/sU';
- $ptns["link"] = '/<link>(.*)<\/link>/sU';
- $ptns["title"] = '/<title>(.*)<\/title>/sU';
- $return_array = array();
- // link の抜き出し
- foreach ($items as $val) {
- $res = array();
- preg_match($ptns["img"], $val, $matches);
- $res["img"] = $matches[1];
- preg_match($ptns["link"], $val, $matches);
- $res["link"] = $matches[1];
- preg_match($ptns["title"], $val, $matches);
- $res["title"] = $matches[1];
- $return_array[] = $res;
- }
- // 配列を返す
- return $return_array;
- }
- // $count 個分の配列を生成
- for ($i = 0; $i < $count; $i++) {
- $tmp_array[] = $i;
- }
- // HTML に整形するための関数
- function make_html($data) {
- $str = "<a target=\"_parent\" href=\"" . $data["link"] . "\">";
- $str .= $data["title"]."</a><br/>".$data["img"];
- return $str;
- }
- print make_html($datas[0]);
と書いてやってみましたが、
http://ikekumi.lovepop.jp/blog2.php
のようなエラーになります。
<img src="http://ikekumi.lovepop.jp/bg/files/20080521143814.JPG" width="320" height="240" alt="" />
のパターンは、
'/<img[\s\t]+src[\s\t]*=[\s\t]*"http://ikekumi\.lovepop\.jp\/bg\/files\/\d+\.jpg)"[^\/>]*?\?>/sU'
ではないのでしょうか?
正規表現って簡単なようで難しいですね。
どこか勉強するのにオススメの本やサイトがあったら教えてほしいです。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。




ページのトップへ


GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。