すっきりまとめる 2 - PHPプロ!Q&A掲示板

611

  • 2000P

すっきりまとめる 2

質問日時 / 2007年8月15日 03:44 (最終編集:8月15日 03:47)    回答数 / 5件

Questioner:  yumisaiki  このエントリーをはてなブックマークに追加 

キーワード / すっきりまとめる    $_GET   

 いつもお世話になっております。

 http://www.phppro.jp/qa/detail.php?id=379#2101を見て、

 http://www.oppai-bra.com/bg/?mode=rss&c=1
  http://www.oppai-bra.com/bg/?mode=rss&c=2

 というように、1~5まで数字が変化していくrssの最新の情報を
 http://www.oppai-bra.com/blog.php を利用して 
トップページに表示させるphpを  blog.php?rssno=1 とか書きたいと思いました。

  1. <?php 
  2.  
  3. // RSS番号 
  4. $num = $_GET["rssno"]
  5.  
  6. // URLの指定 (もうここで自信がない?)
  7. $rdf_url = "http://www.oppai-bra.com/bg/?mode=rss".$num
  8.   
  9. // RSSを取得 
  10. $content = file_get_contents($rdf_url)
  11.   
  12.  
  13.   
  14. // rdfを解析する (下の関数で処理) 
  15. $datas = analyze_rdf($content)
  16. mb_convert_variables("SJIS","UTF-8",$datas);  
  17.   
  18.  
  19. // rdf ファイルを解析するための関数 
  20. function analyze_rdf($cnt) { 
  21.     // <item> ~ </item> を切り出す 
  22.     $ptn = '/<item[^>]*>(.+)<\/item>/sU'
  23.     preg_match_all($ptn$cnt$matches)
  24.   
  25.     // マッチしてれば 
  26.     if (count($matches) > 0) { 
  27.         // 配列に入れる 
  28.         $items = $matches[1]
  29.     } else { 
  30.         return FALSE
  31.     } 
  32.     
  33.     
  34.    
  35.     // パターンの指定  
  36.     $ptns["link"] =  '/<link>(.*)<\/link>/sU';  
  37.     $ptns["title"] = '/<title>(.*)<\/title>/sU'
  38.     $return_array = array()
  39.   
  40.     // link の抜き出し 
  41.     foreach ($items as $val) { 
  42.         $res = array()
  43.   
  44.         preg_match($ptns["link"]$val$matches)
  45.         $res["link"] = $matches[1]
  46.         preg_match($ptns["title"]$val$matches)
  47.         $res["title"] = $matches[1]
  48.   
  49.         $return_array[] = $res
  50.      
  51.     } 
  52.   
  53.     // 配列を返す 
  54.     return $return_array
  55. } 
  56.  
  57.   
  58.  
  59.   
  60.     // $count 個分の配列を生成 
  61.     for ($i = 0$i < $count$i++) { 
  62.         $tmp_array[] = $i
  63.     } 
  64.   
  65.  
  66.   
  67. // HTML に整形するための関数 
  68.  
  69. function make_html($data) { 
  70.     $str = "<a target=\"_parent\" href=\"" . $data["link"] . "\">"
  71.     $str .= $data["title"]."</a>";
  72.     return $str
  73. } 
  74.  
  75. print make_html($datas[0]);
  76.  
  77. ?>

 じゃないよね。 と最初の2行を書きなおしてつまづいてしまいました。
 すみません。教えてください。
     

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01wintermute少し、何が分からないか?が判りにくいのでまとめてい
┃┗A01-1yumisaikiありがとうございます。  全然自信なかったのですが
┃ ┗A01-1-1weekendphpパースは構文解析のことですが、 今回の場合は、RSS
┗A02weekendphpblog.phpのを下記の最初を下記のように書き換えれば、
 ┗A02-1yumisaikiお陰で 無事に簡単にできました。 想像したより簡単

回答一覧

並び替え:

A01 参考になった
answererwintermute [8月15日 10:45]

少し、何が分からないか?が判りにくいのでまとめていただけませんか?

とりあえず、
  1. // URLの指定 (もうここで自信がない?) 
  2. $rdf_url = "http://www.oppai-bra.com/bg/?mode=rss".$num;
については、"http://www.oppai-bra.com/bg/?mode=rss&rssno=".$num;
となるはずです。
意味は、urlencodeについて調べてみると判ると思います。
($numについては、intval()などを通してサニタイズしておいてください。)

他に、mb_convert_variables()の使い方が間違っていたりするので、調べてみてください。
(このサイトですと、投稿したコードの関数については、そこをクリックするとマニュアルが出るので便利です。)

(RSSのパースについては書くのも結構面倒なので、そこが判らないということでしたらその旨を書いてください。)

この意見に回答する

ツリーへ TOPへ

A01-1
replyeryumisaiki [8月17日 17:55]

ありがとうございます。
 全然自信なかったのですが、単純でいいんだとわかり

 $rdf_url = "http://www.oppai-bra.com/bg/?mode=rss&c=".$num;

 と書いたらやりたいことができました。

 おっしゃっていることの意味が 実は あまりわかりません。

 パースするというのも なんとなく情報を吸い込むこと? みたいなくらいにしか。

 

この意見に回答する

ツリーへ TOPへ

A01-1-1 満足
replyerweekendphp [8月20日 12:21]

パースは構文解析のことですが、
今回の場合は、RSSデータから、URLやタイトルなどを抽出することになるかと思います。

今回のプログラムの場合、大まかに

1.RSSのURLの特定
2.URLからRSSデータの読み込み
3.パース(必要情報の抽出)
4.HTMLの整形
5.出力

のような流れでプログラムが実行されるかと思います。

どこがわからないかを明確にするために、wintermuteさんはこのように
回答されたのだと思います。

プログラムがうまく動かない場合は、どこに問題があるのかを
特定する必要があります。

少しずつそういったことも考えながら、プログラムできるようになるといいですね。
頑張ってください!

この意見に回答する

ツリーへ TOPへ

A02 満足
answererweekendphp [8月15日 12:14]

blog.phpのを下記の最初を下記のように書き換えれば、
  http://path_to_url/blog.php?rssno=X
へのアクセスの際に
  http://www.oppai-bra.com/bg/?mode=rss&c=X
のRSSを取得して、HTMLを出力されるようになるかと思います。

  1. <?php
  2.  
  3. // RSS番号 
  4. $num = $_GET["rssno"]
  5.  
  6. // URLの指定 (もうここで自信がない?)
  7. $rdf_url = "http://www.oppai-bra.com/bg/?mode=rss&c=".$num;
  8.  
  9. // RSSを取得
  10.       :
  11.       :

的違いでしたら、ごめんなさい。

この意見に回答する

ツリーへ TOPへ

A02-1
replyeryumisaiki [8月19日 07:24]

お陰で 無事に簡単にできました。
想像したより簡単でした。

 http://www.oppai-bra.com/

 

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

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

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)