RSSをデータベースに格納できない

このQ&Aのポイント
  • 昨日教えていただいたコードで格納して表示するところまで成功しました。自分の不注意でデータベースネームと違う、新規作成したテーブルに格納していたため起こったエラーでした。申し訳ありません。
  • 再度全体のコードと組み合わせてみたのですがエラーが起こり困っております。Uncaught Error: Call to a member function insert() on null
  • <?php $url1 = [ 'http://blog.livedoor.jp/dqnplus/index.rdf', 'http://alfalfalfa.com/index.rdf', 'http://himasoku.com/index.rdf', ]; foreach ($url1 as $url) { $count = 0; $rss = simplexml_load_file($url); foreach ($rss->item as $item) { if ($count >= 8) { break; } ++$count; $title = (string) $item->title; //「$item->title」だけではうまくいかないのでstringにキャスト $link = (string) $item->link; //以下同じ $thumb = (string) $item->thumb->url; $content = (string) $item->description; $wpdb->insert('rssfeed', ['title' => $title, 'link' => $link, 'thumb' => $thumb, 'content' => $content], ['%s', '%s', '%s', '%s']); } } $results = $wpdb->get_results('SELECT * FROM rssfeed'); foreach ($results as $item) { echo $item->title.'<br>'; } ?> <?php $wpdb->show_errors(); ?>
回答を見る
  • ベストアンサー

RSSをデータベースに格納できない

昨日教えていただいたコードで格納して表示するところまで成功しました。 自分の不注意でデータベースネームと違う、新規作成したテーブルに格納していたため起こったエラーでした。申し訳ありません。 再度全体のコードと組み合わせてみたのですがエラーが起こり困っております。 Uncaught Error: Call to a member function insert() on null <?php $url1 = [ 'http://blog.livedoor.jp/dqnplus/index.rdf', 'http://alfalfalfa.com/index.rdf', 'http://himasoku.com/index.rdf', ]; foreach ($url1 as $url) { $count = 0; $rss = simplexml_load_file($url); foreach ($rss->item as $item) { if ($count >= 8) { break; } ++$count; $title = (string) $item->title; //「$item->title」だけではうまくいかないのでstringにキャスト $link = (string) $item->link; //以下同じ $thumb = (string) $item->thumb->url; $content = (string) $item->description; $wpdb->insert('rssfeed', ['title' => $title, 'link' => $link, 'thumb' => $thumb, 'content' => $content], ['%s', '%s', '%s', '%s']); } } $results = $wpdb->get_results('SELECT * FROM rssfeed'); foreach ($results as $item) { echo $item->title.'<br>'; } ?> <?php $wpdb->show_errors(); ?>

  • PHP
  • 回答数70
  • ありがとう数111

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.70

お礼 2022/02/09 18:47 ・cronを同じサイトで複数実装してもエラーにはならないでしょうか? WordPressのCronを試してみました。 CronスケジュールひとつにCronイベントを複数登録できました。 エラーにはならいようです。

php_learn
質問者

お礼

期間をけてからの質問で申し訳ないのですが、コードを整理中に修正が必要な個所があり原因がわかりません echo "<li class=\"sitedate\">{$item->date}</li>"; で画像やカテゴリーなどは表示できるのでしょうか? 個別に指定して表示する必要があるのでしょうか? 1.投稿に画像やカテゴリーなどが表示されず、タイトルと日付けのみ表示されている 2.RSS画像にURLがついておらず画像のみ表示されている ※該当箇所 if (!empty($item->img)) { echo "<li><img src=\"{$item->img}\" width=\"100\"></li>"; } 3.RSSの画像がない場合ダミー画像を表示させたいが書き方が調べてもわからない

php_learn
質問者

補足

ありがとうございます。 引き続きコードを組んでみます…

その他の回答 (69)

  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.39

お礼 2022/01/30 21:05 「echo "<li><a href=\"{$item->guid}\"><span class="img-wrap">{$item->post_thumbnail}</a></span></li>"; こちらの文を以下と同じく画像がないならダミー画像を表示するようにしたいのですが、どうすればよいでしょうか?」 このような場合は、phpのechoをやめて、タグごとに改行してみます。 <li> <a href=\"{$item->guid}\"> <span class="img-wrap"> {$item->post_thumbnail} </span> </a> </li> 条件に影響を受けないものはHTMLメインで出力するように、影響を受ける箇所をifにしてみます。 <li> <a href="<?php echo $item->guid; ?>"> <span class="img-wrap"> <?php if ($item->post_thumbnail) { // 存在する echo "<img src=\"{$item->post_thumbnail}\">"; } else { // 存在しない echo '<img src="noimage.jpg">'; } ?> </span> </a> </li> こんな感じでできそうでしょうか。 以下は補足です。 あまり難しく考えなくてもいいように、私なりにちょっと説明しておきます。 このようにHTML内に<?php ?>を書くことも、 <a href="<?php echo $item->guid; ?>"> こちらのようにPHPからHTMLを書き出すことも、 <?php if ($item->post_thumbnail) { echo "<img src=\"{$item->post_thumbnail}\">"; } ?> 人間には一見違うように見えていますが、PHPは同じことをしています。 PHPは<?phpと?>の間だけ、そこに書かれている何かしらの処理をします。 上の方は、こんな風にも書けますし、 <a href=" <?php echo $item->guid; ?> "> こんな風にもかけます。 <a href=" <?php echo $item->guid; ?> "> こうなると、echo1行だけでなくて、そこにもっと他のことも書けることがわかっていただけるかと思います。 改めて、こちらを見てみましょう。 コメントはなくしました。 <?php if ($item->post_thumbnail) { echo "<img src=\"{$item->post_thumbnail}\">"; } else { echo '<img src="noimage.jpg">'; } ?> これも他の書き方ができます。 <?php if ($item->post_thumbnail) { ?> <img src="<?php echo $item->post_thumbnail; ?>"> <?php } else { ?> <img src="noimage.jpg"> <?php } ?> かなり見にくくなりますが、毎行<?php ?>にする方法です。 これをさらに変化させてHTMLメインにしてみましょう。 <img src=" <?php if ($item->post_thumbnail) { echo $item->post_thumbnail; } else { echo "noimage.jpg"; } ?> "> さっきの$item->guidの表示に似てきたかと思います。 これでPHPがなにをしているかが理解できたら、改行をなくしてみます。 <img src="<?php if ($item->post_thumbnail) { echo $item->post_thumbnail; } else { echo "noimage.jpg"; } ?>"> 1行で書けます。 見にくいので、こんなことは私はしませんが。 このような単純な文字列の切り分けをするだけなら、もう少し簡単に書けます。 PHPをより理解すると言う目的で説明はしておきますが、ぱっと見て何をしているかご自分がわかりやすい書き方にしてください。 <img src="<?php echo ($item->post_thumbnail) ? $item->post_thumbnail : "noimage.jpg"; ?>"> ifはなくなり、echoはひとつになりました。

php_learn
質問者

補足

$itemを使い代入することが可能なんですね勉強になりました。 if文を書かずつなげる方法はコードが長くなると間違いが増えそうなので参考として頭に入れておきます。

  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.38

なるほど、そう言うことでしたか。 では、動いていたコードがあればもう一度全体を投稿できますか。 そして、どこに何を表示しようとしてエラーになったのかを教えてください。 コードが長くて全体を投稿できないようでしたら、エディタでコードを全選択して、[Shift]+[Tab]を何度か押してインデントをなくしてみてください。 それでもだめでしたら、コメントをなくしてください。

php_learn
質問者

お礼

該当箇所はこちらです。アイキャッチを取得するコードをphpで入れようとするとエラーが起こります。 <?php?>がループ内で使えないのは大体理解できたのですが。 echoに<a href="<?php echo get_permalink(); ?>"> <span class="img-wrap"> <!--画像を追加--> <?php // アイキャッチ画像の確認 if (has_post_thumbnail()) { // 存在する the_post_thumbnail(); } else { // 存在しない echo '<img src="noimage.jpg">'; } ?> </span> echo '<h3>投稿</h3>'; for ($j = 0; $j < $posts_per_block; ++$j) { $item_index = $i * $posts_per_block + $j; if ($item_index >= count($post_items)) { break; } $item = $post_items[$item_index]; echo '<ul>'; echo "<li><a href=\"{$item->guid}\">{$item->post_title}</a></li>"; echo "<li>{$item->post_date}</li>"; echo '</ul>'; } }

php_learn
質問者

補足

for ループで処理するデータに対して<?php echo get_permalink(); ?>">を使用すると、syntax error, unexpected '?' エラーが表示されます 同様にhas_post_thumbnail the_timeなどもエラーが出ると思われます。 for文を使ってループを回す場合、wordpress本体から呼び出す関数は使えないという事でしょうか?

  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.37

先ほど、自作されている、と言いましたが、質問者さまの現在のindex.phpの全体コードを確認していないので、もしかしたら、WordPressの従来の処理にのっとっているものだとしたら、そうも言えなくなってしまいます。 質問者さまが考えながら作られているコードと、私が提供したコードを混ぜながらやられているとは思うので、queary_postsにした場合にどうなるかどうするかはわからないため、改めて考えなおす必要があります。 質問者からの補足 2022/01/28 23:01 「1.$post_items = get_posts($args);でwordpressの値を取得していますがページナビを実装する場合、queary postsを使わずに重複を避けて実装が可能なのか」 $post_items = get_posts($args);で試したコードも実行していただいて、ページリンクを確認していただいたと思っています。 結果は重複を避けてものだったと思います。 なので、なぜこの質問が出てきたのかわかりませんが、ページナビと言うのが、プラグインのことであれば、まったく使えないかも知れません。 $post_items = get_posts($args);が使えない、使いたくない、などの理由があるのでしょうか。 「2.記事をループする場合下記の文が必要ですが、 <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> ループ2はRSSと記事両方<?php get_one_post();?>で括って出力させる必要があるのか」 ループ2の部分がないのでちょっとわかりません。 こちらも同じですが、使いたいデータを$post_itemsが持っていれば、記事のループは$wp~を使わなくても大丈夫です。 $post_itemsと$wp~は混合しない方がいいと思いますので、どうしても$wp~にしたいと言うのであればそれでかまいません。 $wp~は実際はどうしているのかわかりませんが、順読み的に処理していて、データがなくなるまで繰り返してなったら終わるループのようです。 終わりが先にわかっている方がループの制御がしやすいので、私は$post_itemsにしました。 query_postsとget_postsについて、お互い理解を深めておいた方がいいかも知れません。 https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_posts

php_learn
質問者

お礼

指摘をいただいたところ2通りの投稿記事表示方法がありました。 前者の方法でも取得することは可能でしょうか? 1つ目は<?php the_post(); ?>を使い、取得した「現在の投稿」に関する関数を使う 2つ目はforループで回し投稿のidを渡す方法

php_learn
質問者

補足

「1.$post_items = get_posts($args);でwordpressの値を取得していますがページナビを実装する場合、queary postsを使わずに重複を避けて実装が可能なのか」 $post_items = get_posts($args);で試したコードも実行していただいて、ページリンクを確認していただいたと思っています。 結果は重複を避けてものだったと思います。 A.RSSは重複を避けていたものだったのですが、投稿記事は試せておりません… 「2.記事をループする場合下記の文が必要ですが、 <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> ループ2はRSSと記事両方<?php get_one_post();?>で括って出力させる必要があるのか」 A.ループ内容は記事とRSSですね、交互に表示する場合、前回はget_one_postで表示させておりました。 for文とwordpressの組み合わせが難しく以下の部分をencoどしようとすると無理があるようです。 php仕様のものにかえて出力するべきでしょうか? <a href="<?php echo get_permalink(); ?>"> <span class="img-wrap"> <!--画像を追加--> <?php // アイキャッチ画像の確認 if (has_post_thumbnail()) { // 存在する the_post_thumbnail(); } else { // 存在しない echo '<img src="noimage.jpg">'; } ?> </span> <!--日付けを追加--> <div class="post-meta2"><div class="img-wrap3"> <?php the_time('Y/m/d'); ?></div> <!--リンククラス付きのカテゴリーを追加--> <?php $categories = get_the_category(); if ($categories) { echo '<ul>'; foreach ($categories as $category) { echo '<li class="cat1"' . $category->slug . '"><a href="' . esc_url(get_category_link($category->term_id)) . '">' . $category->name . '</a></li>'; } echo '</ul>'; } ?>   <!--リンククラス付きのコメント数を追加--> <?php $num_comments = get_comments_number(); if ($num_comments == 0) { $comments = __('No Comments'); // } elseif ($num_comments > 1) { $comments = $num_comments . __(' Comments'); // } else { $comments = __('1 Comment'); // } $write_comments = '<span class="singlecomments"><a href="' . get_comments_link() . '">' . $comments . '</a></span>'; echo $write_comments; ?></div> <!--リンククラス付きのコメントの抜粋を追加--> <div class="img-wrap4"> <?php the_excerpt(); ?></div> <!--リンククラス付きの記事を読むを追加--> <div class="img-wrap5"> <a href="<?php the_permalink(); ?>">記事を読む</a> </div></li>"; echo '</ul>'; } }

  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.36

教えていただいたサイトを確認してみました。 その内容は的確で納得できる page.phpは最初からあるものなので、質問者さまが作成したファイルではありません。 また、page.phpは固定ページ表示用のもので、ページネーションのためものではありません。 使えなくなる機能はあるのですが、それは一覧表示をWordPressの元にあるものにのっとった処理の場合に使えるものです。 質問者さまは一覧表示をすべて自作しているので、この機能が使えなくても問題ありません。 ページネーションそのものも自作されているからです。 なので、前の回答の通り、最新の投稿は「index.php」、固定ページは「page.php」が実行されると認識していただければ大丈夫です。 また、すべてが自作なので、どちらを使ってもそのコードに変わりはありません。

php_learn
質問者

お礼

wordpressとphpでコードの書き方が違うため記事の表示部分にwordpressの取得関数を使い取得する方法がわからず困っております。 不可能であればphpで取得しますが、foreach内でデフォルトの形でencoさせるとエラーが出ます。 もし可能ならば書き方を教えていただけると助かります。

php_learn
質問者

補足

使えなくなる機能はあるのですが、それは一覧表示をWordPressの元にあるものにのっとった処理の場合に使えるものです。 質問者さまは一覧表示をすべて自作しているので、この機能が使えなくても問題ありません。 A.了解いたしました。ご説明いただきありがとうございます。

  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.35

WordPressのコードを初期に戻して、ページの切りかえを試してみました。 デバッガを使って追いかけてみましたが「page.php」は実行されませんでした。 「page.php」が必要との情報元のURLなどを教えていただけますか。

php_learn
質問者

お礼

自前ループで取得するしかないようなので、記事の表示を組みなおしてみます。

php_learn
質問者

補足

https://min-web.com/wordpress-pagination-selfmade-plugin/ ソースはこちらです なくても実装は出来ると書いてありましたが、使えなくなる機能があると書いてあったのでpage.phpを作りました。 get postsからqueary postsに切り替えて作っていたのでその時に作成したのだと思われます。

  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.34

補足 2022/01/28 23:01 「4.固定ページ(index.php)の場合, 固定ページ用テンプレート:page.phpが必要だが、その場合もRSSのページ機能は引き継げるのか」 はい、引き継げます。 私のWordPressの知識がとぼしいため、調べ調べの回答ですみません。 「page.php」がなぜ必要なのか調べてみました。 固定ページとのことなので、このことかと思っています。  設定-表示設定-ホームページの表示-固定ページ 「ホームページの表示」を以下のような設定にして実行してみました。 (→ 実行されるファイル名)  最新の投稿 → index.php  固定ページ-ホームページ-固定ページを選択 → page.php  固定ページ-投稿ページ-固定ページを選択 → index.php どうも、この設定によって「index.php」か「page.php」のどちらかが実行されるようです。 ドキュメントを読んだり、WordPress本体のコードを深く追いかけたわけではないので、他の設定や投稿や固定ページのデータによって、これ以外の場合があるかも知れません。 試した方法は簡単で、それぞれのファイルを以下のようにしただけです。 index.php ---- <?php echo "index"; ---- page.php ---- <?php echo "page"; ---- それぞれの設定で実行すると、上記のような結果になった次第です。 引き継ぐと言うよりも、現在「index.php」を編集されているのを「page.php」にするだけです。 コードをまるまるコピーするといいです。 この方法を先に知っていたら、「page.php」をテスト用のコードファイルにできて楽だったかも。

php_learn
質問者

お礼

echo "<li><a href=\"{$item->guid}\"><span class="img-wrap">{$item->post_thumbnail}</a></span></li>"; こちらの文を以下と同じく画像がないならダミー画像を表示するようにしたいのですが、どうすればよいでしょうか? <a href="<?php echo get_permalink(); ?>"> <span class="img-wrap"> <!--画像を追加--> <?php // アイキャッチ画像の確認 if (has_post_thumbnail()) { // 存在する the_post_thumbnail(); } else { // 存在しない echo '<img src="noimage.jpg">'; } ?> </span>

php_learn
質問者

補足

「ホームページの表示」を以下のような設定にして実行してみました。 (→ 実行されるファイル名)  最新の投稿 → index.php  固定ページ-ホームページ-固定ページを選択 → page.php  固定ページ-投稿ページ-固定ページを選択 → index.php A.通常ですとindex.phpで最新の投稿を並べていって各記事にクリックして飛ばすような作りだと思われます。 index.phpは目次のようなファイルでpage.phpは2ページ目3ページ目と移行するときに必要なファイルのようです。

  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.33

お礼 2022/01/28 20:10 キャストの指摘はそうですね。 他のものもしておいた方がよさそうです。 文字として扱うものには(string)を付けてください。 今回はありませんが、数値があれば(int)とか(float)とか、型に合わせて他にもいくつかあります。 日付は、日付と言ってもstrtotimeに渡すものなのでこれも文字です。  strtotime((string)$dc->date) 私は今はなぜだかキャストなしで問題ないのですが、以前はキャストする必要がありました。 あの時は$wpdbを使ってたからかも。 SimpleXMLElementオブジェクトのプロパティもSimpleXMLElementオブジェクトなので、キャストした方が無難なようです。 補足 2022/01/28 20:01 そうですね、ひとつひとつつぶしていくのが確実だと思います。 ひとつづきのtry~catchだとどこで例外が起きたのかわかりづらくなりそうです。 何行目とはメッセージに書かれてはいそうですが。 コーディング的にも入れ子が一段階増えてしまうので、よくないように思います。 その方の指摘に沿うとしたら。 私もたぶん同じように思っているのですが、データベースに関するものは続行不可能なものが多いです。 なので、executeだけをtry~catchで括る、のが最低限必要なことになってくると思います。 文字が長すぎたり、数値が大きすぎたり、でINSERTやUPDATEに失敗することがあります。 これは先にチェックして文字は切り捨てたり、数値は再入力させたりで回避できたりします。 他には、接続していたデータベースからいつの間にか切断されていたとかあるかも知れません。 そう言った意味で、つまり処理コードそのものには問題はないのだけど、データや状態によって何が起こるかわからない場合には例外処理があった方がいいと思うわけです。 PHPリファレンスのPDOExceptionに例外一覧があるかと思ったのですが見つけられませんでした。 あらかじめどのようなことが起こるか想定されているはずなので、それを未然に防げるものは防げればと思ったのですが。 PDOは仲介的な役目だと思うので、データベースからのエラーメッセージをそのまま返してくるだけなのかな。

php_learn
質問者

お礼

for ($j = 0; $j < $posts_per_block; ++$j) { $item_index = $i * $posts_per_block + $j; if ($item_index >= count($post_items)) { break; } $item = $post_items[$item_index]; に続いてアイキャッチカテゴリー日付けコメント数抜粋を表示したいのですが、構文がわかりません。教えてください。 //アイキャッチifの分岐の書き方がわからない echo "<li><a href=\"{$item->guid}\"><span class="img-wrap">{$item->post_thumbnail}</a></span></li>"; <span class="img-wrap"> <?php // アイキャッチ画像の確認 if (has_post_thumbnail()) { // 存在する the_post_thumbnail(); } else { // 存在しない echo '<img src="noimage.jpg">'; }?></span> //日付けdivを2つつけたいがどのように書けばいいのかわからない echo "<div class="post-meta2"><div class="img-wrap3">{$item->post_date}</div>"; //カテゴリーifの分岐の書き方がわからない echo "<ul><a href=\"{$item->guid}\"><span class="img-wrap">{$item->post_category}</a></span></ul>"; if ($categories) { echo '<ul>'; foreach ($categories as $category) { echo '<li class="cat1"' . $category->slug . '"><a href="' . esc_url(get_category_link($category->term_id)) . '">' . $category->name . '</a></li>'; } echo '</ul>'; } //コメント数$num_comments = get_comments_number()書き方がわからない 日付けでつけたdivの終了タグ <?php $num_comments = get_comments_number(); if ($num_comments == 0) { $comments = __('No Comments'); // } elseif ($num_comments > 1) { $comments = $num_comments . __(' Comments'); // } else { $comments = __('1 Comment'); // } $write_comments = '<span class="singlecomments"><a href="' . get_comments_link() . '">' . $comments . '</a></span>'; echo $write_comments; ?></div> //記事の抜粋 echo "<div class="img-wrap4">{$item->post_excerpt}</div>"; //続きを読む echo "<div class="img-wrap5"><a href=\"{$item->guid}\"></div>";

php_learn
質問者

補足

文字として扱うものには(string)を付けてください。 今回はありませんが、数値があれば(int)とか(float)とか、型に合わせて他にもいくつかあります。 日付は、日付と言ってもstrtotimeに渡すものなのでこれも文字です。  strtotime((string)$dc->date) A.日付けも文字に含まれるんですね参考になりました。 executeだけをtry~catchで括る、のが最低限必要なことになってくると思います。 A.excuteを囲うように指摘を受けていたことを思い出しました。 実行でエラー確認ですね。

  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.32

例外処理(try~catch)をどうするかは、人によって考え方が違うので、正解はないような気がします。 言うと、自分が思うようにするのがいい、が正解です。 どのような時にどのように入れるかを検討していただければ、自分なりの正解がみつかると思います。 指摘してくださった方が言われるのも考えがあっての正解だと思います。 PHPのバージョンや設定によってエラーの動作はまちまちですが、例外については発生するとエラーメッセージが表示されるような初期設定になっていると思います。 なので、例外処理がなくても、「エラー確認できない」(指摘の文言のままかどうかわかりませんが)ことはないと思います。 入れるにしても、ひと続きにはせず、例外が発生しそうな要所要所に入れれば十分だと思います。 今は PDOException を使われていますが、PDO関連のクラスだと思うので、PDOに無関係な例外が起こった場合にどうなるのかわかりません。 getMessage()しか使わないのであれば大丈夫な気はします。 それならそれで Exception でいいような気もします。 PDO関連は PDOException でキャッチする、他の処理に入れる時は Exception でキャッチする、でいいのかな。 重要なのは、例外が起こったらどうするか、です。 続行可能であれば続行手続きを。 続行不可能であればメッセージや画面を表示して適切な手続きを。 PHPが例外メッセージを表示して止まった、にならないようにするためのものだと私は思っています。 PHPの例外メッセージが表示されると、閲覧者が困惑するでしょうし、場合によってはセキュリティや技術ノウハウに関するものが表示されるかも知れません。 これを回避するための例外処理であって、デバッグのためのエラー確認ではないと思っています。 最終的に公開するようになって入れても遅くないと思います。 下手に例外をキャッチすると余計にエラーがわからなくなります。 と言うのが私の正解です。

php_learn
質問者

お礼

もう1点理解できていない点があるのですが、以下の指摘文をいただきました。 キャストするのは$titleのみ文字が出力できないためという認識なのですが、その他のデータも同様なのでしょうか? $title等は、SimpleXMLElementでしょう。 stringにキャストしておくべき。

php_learn
質問者

補足

executeに対してtry~catchで括っていないので、もしエラーが発生していても捕捉できていないという指摘があったのですが、初期はデータベースの接続確認として実装したつもりでした。 エラーをすべて出力するよりも1つ1つつぶしていくほうが確実だという事ですね。

  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.31

index.phpはいろいろ考えて変更してみました。 私の方ではこんな感じになっています。 ※コメントがおもな変更です。 ---- <?php require_once 'rss_db.php'; //古いデータを削除 //※先に実行する $sql = 'DELETE FROM rss_feed WHERE date < ?'; $stmt = $dbh->prepare($sql); $delete_date = date('Y-m-d H:i:s', strtotime('-1 week')); //※削除対象日付 $stmt->execute([$delete_date]); //RSS保存 $url1 = [ 'http://nns2ch.net/index.rdf', 'http://aqua2ch.net/index.rdf', 'https://worldfn.net/index.rdf', ]; $stmt = $dbh->prepare('insert into rss_feed (title, link, date, img) values (?, ?, ?, ?) on duplicate key update title=?, link=?, date=?, img=?'); foreach ($url1 as $url) { if (($rss = @simplexml_load_file($url)) === false) { continue; } foreach ($rss->item as $item) { $dc = $item->children('dc', true); $date = date('Y-m-d H:i:s', strtotime($dc->date)); //※削除対象日付より古いRSSは保存しない if ($date < $delete_date) { continue; } $title = $item->title; $link = $item->link; $content = $item->children('content', true); $result = preg_match('/<img[^>]*src=\"([^"]+)\"[^>]*>/i', $content->encoded, $matches); if (1 == $result) { $img = $matches[1]; } else { $img = ''; } $stmt->execute([$title, $link, $date, $img, $title, $link, $date, $img]); } } //表示設定 $current_page = $_REQUEST['page'] ?? 1; //現在ページ $block_per_page = 2; //ページあたりブロック件数 $rss_per_block = 18; //ブロックあたりRSS件数 $posts_per_block = 5; //ブロックあたり投稿件数 //RSS読み込み $rss_per_page = $block_per_page * $rss_per_block; //ページあたりRSS件数 $rss_offset = ($current_page - 1) * $rss_per_page; //RSSオフセット $sql = 'SELECT * FROM rss_feed ORDER BY date DESC LIMIT ?,?'; $stmt = $dbh->prepare($sql); $stmt->bindParam(1, $rss_offset, PDO::PARAM_INT); $stmt->bindParam(2, $rss_per_page, PDO::PARAM_INT); $stmt->execute(); $rss_items = $stmt->fetchAll(PDO::FETCH_OBJ); //投稿読み込み $posts_per_page = $block_per_page * $posts_per_block; //ページあたり投稿件数 $posts_offset = ($current_page - 1) * $posts_per_page; //投稿オフセット $args = [ 'posts_per_page' => $posts_per_page, 'offset' => $posts_offset, ]; $post_items = get_posts($args); //表示 for ($i = 0; $i < $block_per_page; ++$i) { echo '<h2>ブロック</h2>'; echo '<h3>RSS</h3>'; for ($j = 0; $j < $rss_per_block; ++$j) { $item_index = $i * $rss_per_block + $j; if ($item_index >= count($rss_items)) { break; } $item = $rss_items[$item_index]; echo '<ul>'; echo "<li class=\"sitelink\"><a href=\"{$item->link}\">{$item->title}</a></li>"; echo "<li class=\"sitelink\"><a href=\"{$item->link}\">site</a></li>"; echo "<li class=\"sitedate\">{$item->date}</li>"; //※画像URLがあれば表示 if (!empty($item->img)) { echo "<li><img src=\"{$item->img}\" width=\"100\"></li>"; } echo '</ul>'; } echo '<h3>投稿</h3>'; for ($j = 0; $j < $posts_per_block; ++$j) { $item_index = $i * $posts_per_block + $j; if ($item_index >= count($post_items)) { break; } $item = $post_items[$item_index]; echo '<ul>'; echo "<li><a href=\"{$item->guid}\">{$item->post_title}</a></li>"; echo "<li>{$item->post_date}</li>"; echo '</ul>'; } } //ページリンク $pages = ceil($wp_query->found_posts / $posts_per_page); for ($i = 1; $i <= $pages; ++$i) { if (1 == $i) { $page_text = '<<'; } elseif ($i == $pages) { $page_text = '>>'; } else { $page_text = $i; } echo "<a href=\"?page={$i}\">[{$page_text}]</a>"; }

  • dell_OK
  • ベストアンサー率13% (739/5636)
回答No.30

追加していただいた読み込みのSQLは「//表示部分」のコメントの直後に追加してください。 ---- //表示部分 $sql = 'SELECT * FROM rss_feed ORDER BY date DESC'; $stmt = $dbh->prepare($sql); $stmt->execute(); while ($item = $stmt->fetch(PDO::FETCH_OBJ)) { ---- エラーはページリンクでWordPressのオブジェクトを使っているためです。 なのでページリンクはなくして試してください。 私の言う「テスト用」を誤解されていないでしょうか。 テストサーバーのことではなく、テスト用のコードファイルのことで、テーマの「index.php」とは別に、まったく違うフォルダで実行しているものです。 なのでWordPressに関係するものはまったく使えません。 テスト用のコードファイルで実行して成功したら、必要な処理コードを「index.php」に反映する、と言う手順でやっています。

php_learn
質問者

補足

表示部分につきましては勘違いしておりました。 ありがとうございます。 index.php以外にファイルを作ってそちらにコードを書いて読み込ませるという事ですね。

関連するQ&A

  • データベースからの画像とタイトルにURLがつかない

    RSSを取得して格納までは成功したのですが、画像の取得ができずURL付き画像とタイトルを出力できていません。原因がわからないのですがどのようなことが考えられるでしょうか? <?php try { $dsn = 'mysql:dbname=hlxclitx_wp1;host=localhost'; $user = 'hlxclitx_wp1'; $password = 'E.HrypHWxNmltXgC5eS26'; $dbh = new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//エラーが発生した時に、例外を投げる echo "データベースへの接続が出来ました"; }catch (PDOException $e) { echo $e->getMessage();// err時はメッセージを表示 exit; } //RSSをまとめる $url1 = [ 'http://blog.livedoor.jp/dqnplus/index.rdf', 'http://alfalfalfa.com/index.rdf', 'http://himasoku.com/index.rdf',]; // insertの準備 $stmt = $pdo->prepare('insert into teblename (title, link, date) values (?, ?, ?)'); // URLのループ開始 テーブルに格納 foreach ($url1 as $url) { // simplexml_load_file()でRSSをパース解析してオブジェクトを取得します。 if (($rss = @simplexml_load_file($url)) === false) continue; $site_title = $rss->channel->title;// RSSタイトル取得 値の代入 自作関数 // サイトごとに表示するなら、サイトタイトル表示はこの位置 printf('<h2>%s</h2>', $site_title); $count = 0; // 個別記事のループ開始 RSSの取得が始まる foreach ($rss->item as $item) { if (++$count > 8) break; $title = $item->title;//タイトル取得 $link = $item->link;//リンクを取得 $dc = $item->children('http://purl.org/dc/elements/1.1/');//RSSの情報を取得 $thumb = $item->thumb->url;画像を取得 $thumbnail = '/images/dummy_thumbnail.jpg'; // 画像がない場合の代替画像 if ( $thumb ){ $thumbnail = $thumb; } // 取得した記事データの表示 if ($count === 1) print('<ul>'); $date = date('Y-m-d H:i:s', strtotime($dc->date));//RSS日付け取得 printf('<li>%s:%s:%s</li>', $title, $link, $date,$thumb);// $title, $link, $date,$thumb を表示 } if ($count) print('</ul>'); } ?>

    • ベストアンサー
    • PHP
  • RSSの格納、表示がうまくいかない

    データベースへの接続は完了したんですが、RSSの格納がうまくいきません。 エラー文も表示されず原因がわからないのですが、おかしな文はありますでしょうか? <?php require_once(dirname(dirname(dirname(dirname( __FILE__ )))) . '/wp-load.php' ); //ファイルの先頭で読み込む try { $dsn = 'mysql:dbname=hlxclitx_wp1;host=localhost'; $user = 'hlxclitx_wp1'; $password = 'E.HrypHWxNmltXgC5eS26'; $dbh = new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//エラーが発生した時に、例外を投げる echo "データベースへの接続が出来ました"; }catch (PDOException $e) { echo $e->getMessage();// err時はメッセージを表示 exit; } $url1 = [ 'http://blog.livedoor.jp/dqnplus/index.rdf', 'http://alfalfalfa.com/index.rdf', 'http://himasoku.com/index.rdf',]; //itemを取り出して$rssに渡す $date = $rss->channel->date; // RSSアイテム取得 値の代入 自作関数 //SQL文を実行、結果を求める $stmt = $dbh->prepare('insert into hlxclitx_feed_rss (data) values (?)'); //$url1配列から先頭のデータをとりだして$urlに渡す なくなるまでループする foreach ($url1 as $url) { //rssがほしいから、もらった$urlを渡す if (($rss = @simplexml_load_file($url)) === false) continue; // RSSタイトルがほしいから、もらったrssを渡す $site_title = $rss->channel->title; //初期のカウント $count = 0; //itemを取り出して$rssに渡す ループ foreach ($rss->item as $item) { //8件を超えたとき取得を終了する if (++$count > 8) break; //タイトル、リンクを取得 $title = $item->title; $link = $item->link; //RSSの情報を取得 $dc = $item->children('http://purl.org/dc/elements/1.1/'); //RSS日付け取得 $date = date('Y-m-d H:i:s', strtotime($dc->date)); // $title, $link, $date を表示 $stmt->execute[json_encode($item)]; } } ?> 補足情報(FW/ツールのバージョンなど) db name hlxclitx_wp1 table name hlxclitx_feed_rss テーブル名 (data) 名前 item

    • ベストアンサー
    • PHP
  • RSSをMYSQLに入れる最適なコードがわからない

    テーブル接続→テーブル作成(必要か不明)→RSSをまとめる→RSSを取得→RSSをテーブルに入れる→RSSを表示をPHPで作成しているのですが、 RSSをテーブルに入れる最適なコードがわからず困っております。 insertを使用してRSSをテーブルに入れたいのですが、INSERT INTOはphpにいきなり書いてもエラーにならないのでしょうか?$を使用するほうの記載のほうが正しいのでしょうか? <?php require_once(dirname(dirname(dirname(dirname( __FILE__ )))) . '/wp-load.php' ); //ファイルの先頭で読み込む try { $dsn = 'mysql:dbname=ozvutmpq_wp1;host=localhost'; $user = 'ozvutmpq_wp1'; $password = 'Rn_&Zi$gWKae'; $dbh = new PDO($dsn,$user,$pass); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//エラーが発生した時に、例外を投げる echo "データベースへの接続が出来ました"; }catch (PDOException $e) { echo $e->getMessage();// err時はメッセージを表示 exit; } //RSSをまとめる $url1 = [ 'http://', 'http://', 'http://',];//フィード登録1次元配列に foreach ($url1 as $url) { //複数のRSSを読み込むには?A.RSSのURLを配列に入れ、その配列をsimplexmlの引数にします。 $count = 0;//初期のカウント //RSSを取得 $rss = simplexml_load_file("$url"); // simplexml_load_file()でRSSをパース解析してオブジェクトを取得します。 $site_title = $rss->channel->title; // RSSタイトル取得 値の代入 自作関数 $post_thumbnail= $rss->channel->thumb; // RSSサムネイル画像取得 値の代入 自作関数 foreach ($rss->item as $item) { // この内側で $item を参照する if ($count >= 8) { break;//8件を超えたとき取得を終了する } $count++; $title = $item->title; // タイトル $link = $item->link; // リンク $thumb = $item->thumb->url; // アイキャッチサムネイル $content = $item ->description;// 詳細、必要なのか不明 date_default_timezone_set("Asia/Tokyo");//日時、タイトルとサムネイル画像だけほしいので要らない気がする $dc = $item ->children('http://purl.org/dc/elements/1.1/');//RSSの情報をPHPで取得するとき、[simplexml_load_file()]関数を使いますが、読み込むファイルの形式が[RSS 1.0]の場合、特殊な処理を施してあげないと正確に取得・表示することができません。 $day = date('Y/m/d H:i',strtotime($dc -> date));// RSS日付け取得 値の代入 自作関数 RSS1.0を取得したい場合「dc」の名前空間は「xmlns:dc="http://purl.org/dc/elements/1.1/"」 と定義されているので、これを引数として指定します。 $key = date('YmdGHis', strtotime($dc -> date));//DB等に入れやすい書式に変換 } } //RSSをテーブルに入れる INSERT INTO rssfeed (title, link, thumb,content)//テーブル名 VALUES ($title, $link,$thumb,$content now()) ON DUPLICATE KEY UPDATE up_date = now(); //名前を独自につける $item_insert_sql = "INSERT INTO $db_database.`rssfeed`(title, link, thumb, content) VALUES ('" . $title . "', '" . $link . "', '" . $thumb . "', '" . $content . "')";//mysql_queryとしてまとめてコードとして使うため?

    • ベストアンサー
    • MySQL
  • テーブル格納して表示した記事を重複で表示させない

    以下のコードに①select countを用いる方法と②select existsを用いる方法を使いコンテンツの重複を避けるようにしたいと思っています。 調べたところ、以下の場合はselect countを避けるべきだとありました。RSSをテーブルに1ページ36×10ページの360コンテンツ格納するつもりです。この場合かなり重くなることが想定されるのですが、select existsを使いすでに表示された記事を除外することはできるのでしょうか?idなどで除外している例はあるのですが、すでに表示した記事にはないため方法がわかりません。 ・カウント対象件数が多い ・インデックスが効かない ・繰り返し実行することが多い <?php try { $dsn = 'mysql:dbname=hlxclitx_wp1;host=localhost'; $user = 'hlxclitx_wp1'; $password = 'E.HrypHWxNmltXgC5eS26'; $dbh = new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//エラーが発生した時に、例外を投げる echo "データベースへの接続が出来ました"; }catch (PDOException $e) { echo $e->getMessage();// err時はメッセージを表示 exit; } //RSSをまとめる $url1 = [ 'http://blog.livedoor.jp/dqnplus/index.rdf', 'http://alfalfalfa.com/index.rdf', 'http://himasoku.com/index.rdf',]; // insertの準備 $stmt = $dbh->prepare('insert into teblename (title, link, date) values (?, ?, ?)'); // URLのループ開始 テーブルに格納 foreach ($url1 as $url) { // simplexml_load_file()でRSSをパース解析してオブジェクトを取得します。 if (($rss = @simplexml_load_file($url)) === false) continue; $site_title = $rss->channel->title;// RSSタイトル取得 値の代入 自作関数 // サイトごとに表示するなら、サイトタイトル表示はこの位置 printf('<h2>%s</h2>', $site_title); $count = 0; // 個別記事のループ開始 RSSの取得が始まる foreach ($rss->item as $item) { if (++$count > 8) break; $title = $item->title;//タイトル取得 $link = $item->link;//リンクを取得 $dc = $item->children('http://purl.org/dc/elements/1.1/');//RSSの情報を取得 $thumb = $item->thumb->url;//画像を取得 //重複データを避けるため ・カウント対象件数が多い・インデックスが効かない・繰り返し実行することが多い $sql = "select exists ('select * from rss_feed')"; // 取得した記事データの表示 if ($count === 1) print('<ul>'); $date = date('Y-m-d H:i:s', strtotime($dc->date));//RSS日付け取得 printf('<li class="sitelink"><a href="%s">%s</a></li>', $link, $title); printf('<li class="sitelink"><a href="%s">site</a></li>', $link); printf('<li class="sitedate">%s</li>', $date); printf('<li class="sitethumb"><a href="%s"><img src="%s"></a></li>', $link, $thumbnail); print '</ul>';// $title, $link, $date,$thumb を表示 } if ($count) print('</ul>'); } ?>

    • ベストアンサー
    • PHP
  • タイトルと画像にリンクを付けたい

    クラスを付けることはできたんですが、リンクを付けることができません。 調べてもわからなかったのですが、どのようにコード修正すればよいでしょうか? ※該当コード printf('<li class="sitetitle">%s</li>', $title); printf('<li class="sitelink">%s</li>', $link); printf('<li class="sitedate">%s</li>', $date); printf('<li class="sitethumb">%s</li>', $thumbnail); print '</ul>';// $title, $link, $date,$thumb を表示 <?php try { $dsn = 'mysql:dbname=hlxclitx_wp1;host=localhost'; $user = 'hlxclitx_wp1'; $password = 'E.HrypHWxNmltXgC5eS26'; $dbh = new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//エラーが発生した時に、例外を投げる echo "データベースへの接続が出来ました"; }catch (PDOException $e) { echo $e->getMessage();// err時はメッセージを表示 exit; } //RSSをまとめる $url1 = [ 'http://blog.livedoor.jp/dqnplus/index.rdf', 'http://alfalfalfa.com/index.rdf', 'http://himasoku.com/index.rdf',]; // insertの準備 $stmt = $dbh->prepare('insert into teblename (title, link, date) values (?, ?, ?)'); // URLのループ開始 テーブルに格納 foreach ($url1 as $url) { // simplexml_load_file()でRSSをパース解析してオブジェクトを取得します。 if (($rss = @simplexml_load_file($url)) === false) continue; $site_title = $rss->channel->title;// RSSタイトル取得 値の代入 自作関数 // サイトごとに表示するなら、サイトタイトル表示はこの位置 printf('<h2>%s</h2>', $site_title); $count = 0; // 個別記事のループ開始 RSSの取得が始まる foreach ($rss->item as $item) { if (++$count > 8) break; $title = $item->title;//タイトル取得 $link = $item->link;//リンクを取得 $dc = $item->children('http://purl.org/dc/elements/1.1/');//RSSの情報を取得 $thumb = $item->thumb->url;//画像を取得 // 取得した記事データの表示 if ($count === 1) print('<ul>'); $date = date('Y-m-d H:i:s', strtotime($dc->date));//RSS日付け取得 printf('<li class="sitetitle">%s</li>', $title); printf('<li class="sitelink">%s</li>', $link); printf('<li class="sitedate">%s</li>', $date); printf('<li class="sitethumb">%s</li>', $thumbnail); print '</ul>';// $title, $link, $date,$thumb を表示 } if ($count) print('</ul>'); } ?>

    • ベストアンサー
    • PHP
  • RSSを取得したいのですが

    下記サイトを参考に、以下のコードを埋め込んだのですが、 http://plaza.rakuten.co.jp/kemusiro/diary/200601150000/ 日付が (1970/01/01 00:00:00) と表示された上に文字化けしてしまいます。 MagpieRSSはmagpierss-0.72.tar.gzから必要ファイルを、index.phpの下におきました。 正常に表示させるためには、どう直せばよいでしょうか? <?php require_once('magpierss/rss_fetch.inc'); define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); $count = 5; $length = 60; $url = 'http://api.plaza.rakuten.ne.jp/kemusiro/rss/'; $rss = fetch_rss($url); echo "<ul>"; array_splice($rss->items, $count); foreach ($rss->items as $item) { $href = $item['link']; $title = mb_convert_encoding($item['title'], "SJIS", "auto"); $date = date('Y/m/d H:i:s', parse_w3cdtf($item['dc']['date'])); $description = mb_convert_encoding($item['description'], "SJIS", "auto"); if (mb_strlen($description) > $length) { $description = mb_strcut($description, 0, $length) . "..."; } echo "<li>"; echo "<FONT color=\"#ff8040\">(" . $date . ")</FONT> "; echo "<a href=$href>" . $title . "</a><BR>"; echo $description . "</li>"; } echo "</ul>"; ?>

    • 締切済み
    • PHP
  • MagpieRSSを使ってrss取得の際の表示件数

    MagpieRSSを使ってrssを取得したく下記のphpを作成しました。 <?php define('MAGPIE_OUTPUT_ENCODING','UTF-8'); require_once('rss_fetch.inc'); $url="xxxx.rdf"; $rss = fetch_rss($url); foreach($rss->items as $item){ foreach($item[dc] as $key => $daytime){ if($key == "date"){ $rssdate = strtotime("$daytime"); $today = strtotime(date("Y/m/d H:i")); } if($rssdate > $today){ print("$item[title]"); } } } ?> 過去から未来の予定が書いてあるRSS(rdf)があり、 現在の時間のデータを取得して、未来の予定のを表示したいです。 現在、print("$item[title]");で未来の予定がズラっと取得できる状態です。 そして、ここからが問題なのですが、 ここ(print("$item[title]");)の表示を最新の1件にしたいのですが、どうしてもうまくいきません。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • simplexml_load_fileを使用してblogのRSSを読み

    simplexml_load_fileを使用してblogのRSSを読み込み、ページ内に表示させたいのですが 下記のスクリプトでは楽天とlivedoorのRSSの読み込みが出来ません。 色々検索してみたのですがこれといった解決法を発見できなかったので質問させていただきます。 どうぞよろしくお願いいたします。 <?php $xml = simplexml_load_file('RSSをここに入力'); $i = 0; foreach($xml->channel->item as $item) { if(++$i>5) break; $title = (string)$item->title ; $link = (string)$item->link ; echo ("<li><a href=".$link.">".$title."</a></li><br />"); } ?>

    • ベストアンサー
    • PHP
  • RSS1.0のitemとlinkの関係

    さきほどから、自分のサイトの更新情報を載せるべく、RSSファイルを作ろうと考えていました。 Headline-Editor Liteというのソフトを使って作ってみました。 http://www.infomaker.jp/editorlite/ 更新情報としては、その内容を載せるつもりなのですが、 アドレスはトップページで固定しようと考えていました。 このソフトで、RSSファイルを作成すると、 itemタグのrdf:about属性に、「指定アドレス+#he日付」という値をいれ、 itemタグ内のlinkタグに、「指定アドレス」を入れて、RSSファイルを生成します。 こうして生成したRSSファイルをサーバーにあげて、 Headline-Readerで確認すると、当たり前ですが、正常に取得できます。 http://www.infomaker.jp/headline/ ところが、goo RSSリーダーでは、最新の1itemしか取得できません。 http://reader.goo.ne.jp/ RSS1.0の仕様によると、itemタグのrdf:about属性の値は、一意でないといけないようです。 http://www.net.intap.or.jp/INTAP/s-web/data/TR/1-2.html#s5.5 しかし、その値は、linkタグ内の値と一致していなくてもよいようです。 (文章を読むと、一致させることが推奨されているようですが) RSSファイルをいじって調べてみたところ、 goo RSSリーダーでは、itemタグのrdf:about属性の値に関わらず、 linkタグ内の値が同一のものは、同一のitemとして扱う仕様になっているようです。 このgoo RSSリーダーの仕様は、RSS1.0の仕様に基づいたものとは思えませんが、 やはりgoo RSSリーダーの独自仕様なのでしょうか? ご存知の方がいらっしゃいましたら、教えてくださいm(_ _)m

    • ベストアンサー
    • XML
  • RSSに関して

    こんばんは。お世話になっております。 只今、テスト的に以下のサイトのソースを参考に、登録していただいた方のブログの一覧表示(更新題名が1件ずつ)が出来るように組んでいるのですが、非常に重たく、他に上手いやり方がある?などと色々と試行錯誤を繰り返している状況です。 http://works.xrea.jp/headline.php イメージ的に、登録してくれた会員のブログを、ブログランキングサイトのように、検索一覧として1件ずつ更新記事(題名)を表示させたいと考えてます。 ソースの流れは、 while($row = mysql_fetch_array($res, MYSQL_ASSOC)){  $url = $row["url"];  require("./rss_index/rss-test.php");  ・  ・ 以上、検索ファイル 以下、rss-test.php <?php require_once 'rss_fetch.inc'; $url = $url; $rss = fetch_rss($url); $title = $rss->channel['title']; $title = mb_convert_encoding($title, "EUC-JP", "auto"); echo "<h5>$title</h5>\n"; $rss->items = array_slice($rss->items, 0, 1); foreach ($rss->items as $item ) { $title = $item[title]; $title = mb_convert_encoding($title, "EUC-JP", "auto"); $url = $item[link]; echo "<li><a href=\"$url\">$title</a></li>\n"; } ?> 以上、お忙しい中恐縮ですが、ご指摘も含めアドバイスなど頂けたら幸いです。宜しくお願い致します。

    • ベストアンサー
    • PHP