phpでrssを取得して格納表示したいです。
カラムはtitle,link,dateです。
テーブル名はrss_feedです。
breakもきいてないようで、rssの数だけ表示されております。
限界まで考えましたがどうしようもないです。値を取得できません。
エラーも表示されずデータベースには
tutle link date
0 0 2022
のみ表示されております。
<?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 rss_feed (title, link, date) values (?, ?, ?)');
// URLのループ開始 テーブルに格納
foreach ($url1 as $url) {
if (($rss = @simplexml_load_file($url)) === false) {
continue;
}
foreach ($rss->item as $item) {
$title = $item->title;
$link = $item->link;
$dc = $item->children('http://purl.org/dc/elements/1.1/');
$date = date('Y-m-d H:i:s', strtotime($dc->date));
$stmt->execute([$title, $link, $date]);
}
}
// サイトごとに表示するなら、サイトタイトル表示はこの位置
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 * FROM rss_feed ORDER BY date DESC';
$stmt = $dbh->prepare($sql);
$stmt->execute();
while ($item = $stmt->fetch(PDO::FETCH_OBJ)) {
print('<ul>');
printf('<li class="sitelink"><a href="%s">%s</a></li>', $item->link, $item->title);
printf('<li class="sitelink"><a href="%s">site</a></li>', $item->link);
printf('<li class="sitedate">%s</li>', $item->date);
print('</ul>');
}
?>
No.1ベストアンサー
- 回答日時:
誤: $title = $item->title; # オブジェクト扱い
正: $title = (string) $item->title; # 文字列扱いに変換
根拠
https://www.php.net/manual/ja/simplexml.examples …
例6 要素および属性をテキストと比較する
要素または属性を(中略)文字列を引数とする関数に渡すには(中略)文字列にキャストする必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- PHP php エラー 2 2022/10/23 16:43
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP 10文字以降は非表示にしたいんですが、文法が分かりませんアドバイスお願い致します 1 2022/07/10 20:37
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
昨日の日付名でファイルを作成...
-
開始と終了を指定して、その間...
-
6ヶ月前の日付を取得するにはど...
-
PHP、UNIXタイムでの日時計算に...
-
ASP 年度年齢の計算
-
MS-DOSコマンドのリダイ...
-
昨日の日付を取得するVBscript
-
Dosブロンプトでtabを出力したい
-
DTOとEntityの差は何ですか。
-
switch()文で値の大小比較
-
小数点以下0の非表示
-
バッチファイルでpingの結果を...
-
ローカルのコンピュータ名を取...
-
phpでcookieがうまく保存されない
-
findstrのerrorlevel
-
「取得先」という表現について
-
Sessionの上限について
-
shシェルスクリプト 空白行の...
-
既存関数の上書き
-
セッションを維持したまま、サ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
昨日の日付を取得するVBscript
-
PHPで以下のような占いプログラ...
-
C言語を使って、ある特定の日の...
-
substrの使い方について教えて...
-
一週間の表示の仕方と文字表示
-
アップロードしたファイル名に...
-
第何週かを取得したい
-
プルダウンメニューの値をDBに...
-
PHPでカレンダーを作る(縦書き)
-
日付によって画像を変える
-
差分の月数を算出する方法
-
SQL:TIMESTAMPの期間検索を指...
-
C言語でシステム日付との差を...
-
PHP 指定した期間だけ表示した...
-
プルダウンで今日以降の日付を...
-
Accessコンボボックス
-
MovableTypeで、ある日付を過ぎ...
-
Java Scriptで、ある日付に加算...
おすすめ情報
$stmt6直接変数を格納したり表示出来ないのでしょうか?