teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

a

2021/08/01 13:32

投稿

1111111
1111111

スコア0

title CHANGED
File without changes
body CHANGED
@@ -4,18 +4,7 @@
4
4
  (例)PHP(CakePHP)で●●なシステムを作っています。
5
5
  ■■な機能を実装中に以下のエラーメッセージが発生しました。
6
6
 
7
- PHPでフィードを複数読み込んで表示するものを作りたいと思っています
8
- 以下は以前どこかのHPに記載があったものをコピペしたものです
9
- 他のサイトのRSSを読み込むことができます
10
- これを元にyoutubeのチャンネルのフィードを読み込んで表示できるようにしたいのですが、
11
- どの部分を変えたらいいのでしょうか
12
- https://www.youtube.com/feeds/videos.xml?user=Microsoft
13
- このようなフィードを複数一度に読み込みたいです
14
7
 
15
- ライブラリは使えない環境なのでこのような形になっています
16
-
17
-
18
-
19
8
  ### 発生している問題・エラーメッセージ
20
9
 
21
10
  ```

1

p

2021/08/01 13:32

投稿

1111111
1111111

スコア0

title CHANGED
File without changes
body CHANGED
@@ -15,126 +15,7 @@
15
15
  ライブラリは使えない環境なのでこのような形になっています
16
16
 
17
17
 
18
- <?php
19
18
 
20
- //表示記事数
21
- $hyojiNum = 120;
22
-
23
- //フィード登録
24
- $data['feedurl'][] = '';
25
- $data['feedurl'][] = '';
26
- $data['feedurl'][] = '';
27
- $data['feedurl'][] = '';
28
- $data['feedurl'][] = '';
29
- $data['feedurl'][] = '';
30
- $data['feedurl'][] = '';
31
- $data['feedurl'][] = '';
32
-
33
- //$data['feedurl'][] = ''; 必要な分だけ追加してください
34
-
35
- $rssList = $data['feedurl'];
36
-
37
- //同時呼び出し
38
- $rssdataRaw = multiRequest($rssList);
39
- for($n=0;$n<count($rssdataRaw);$n++){
40
- //URL設定
41
- $rssdata = simplexml_load_string($rssdataRaw[$n], 'SimpleXMLElement', LIBXML_NOCDATA);
42
- if($rssdata->channel->item) $rssdata = $rssdata->channel;
43
- if($rssdata->item){
44
- $b_title=$rssdata->title;
45
- foreach($rssdata->item as $myEntry){
46
-
47
- $rssDate = $myEntry->pubDate;
48
- if(!$rssDate) $rssDate = $myEntry->children("http://purl.org/dc/elements/1.1/")->date;
49
- date_default_timezone_set('Asia/Tokyo');
50
- $myDateGNU = strtotime($rssDate);
51
- $myDate = date('m/d',$myDateGNU);
52
- $myTitle = mb_strimwidth($myEntry->title, 0,200, "…"); //タイトル取得
53
-
54
- $myLink = $myEntry->link; //リンクURL取得
55
-
56
- $myContent = $myEntry->children('http://purl.org/rss/1.0/modules/content/');
57
- $myContent2 = $myContent->encoded;
58
-
59
- $outdata[$myDateGNU] ='<a href="' . $myLink . '" target="_blank" class="clearfix blogs">
60
- <div class="blog_t">'.$myTitle.'.'.$myDate.'.<p> </div>
61
- </div>
62
- </a>';
63
-
64
- }
65
- }
66
- }
67
-
68
- //ソート
69
- krsort($outdata);
70
-
71
- $nn = 0;
72
- $html = '';
73
-
74
- //
75
- foreach($outdata as $outdata) {
76
- $nn++;
77
- $html.= $outdata;
78
- if($nn == $hyojiNum) break;
79
- }
80
-
81
- echo $html;
82
-
83
- // ここで「echo $html」 で一覧表示できます。
84
-
85
- //ここから同時呼び出し関数
86
- function multiRequest($data, $options = array()) {
87
-
88
- // 配列を用意します。
89
- $curly = array();
90
- // data to be returned
91
- $result = array();
92
-
93
- //並列ファンクション
94
- $mh = curl_multi_init();
95
-
96
- // loop through $data and create curl handles
97
- // then add them to the multi-handle
98
- foreach ($data as $id => $d) {
99
-
100
- $curly[$id] = curl_init();
101
-
102
- $url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;
103
- curl_setopt($curly[$id], CURLOPT_URL, $url);
104
- curl_setopt($curly[$id], CURLOPT_HEADER, 0);
105
- curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);
106
-
107
- // 投稿記事があるかどうか
108
- if (is_array($d)) {
109
- if (!empty($d['post'])) {
110
- curl_setopt($curly[$id], CURLOPT_POST, 1);
111
- curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']);
112
- }
113
- }
114
-
115
- if (!empty($options)) { curl_setopt_array($curly[$id], $options);}
116
- curl_multi_add_handle($mh, $curly[$id]);
117
- }
118
-
119
- $running = null;
120
- // ハンドルを実行
121
- do {
122
- curl_multi_exec($mh, $running);
123
- } while($running > 0);
124
-
125
- foreach($curly as $id => $c) {
126
- $result[$id] = curl_multi_getcontent($c);
127
- curl_multi_remove_handle($mh, $c);
128
- }
129
-
130
- // ハンドルを閉じる
131
- curl_multi_close($mh);
132
-
133
- return $result;
134
- }
135
-
136
- ?>
137
-
138
19
  ### 発生している問題・エラーメッセージ
139
20
 
140
21
  ```