質問編集履歴

2

a

2021/08/01 13:32

投稿

1111111
1111111

スコア0

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

1

p

2021/08/01 13:32

投稿

1111111
1111111

スコア0

test CHANGED
File without changes
test CHANGED
@@ -31,244 +31,6 @@
31
31
 
32
32
 
33
33
 
34
-
35
- <?php
36
-
37
-
38
-
39
- //表示記事数
40
-
41
- $hyojiNum = 120;
42
-
43
-
44
-
45
- //フィード登録
46
-
47
- $data['feedurl'][] = '';
48
-
49
- $data['feedurl'][] = '';
50
-
51
- $data['feedurl'][] = '';
52
-
53
- $data['feedurl'][] = '';
54
-
55
- $data['feedurl'][] = '';
56
-
57
- $data['feedurl'][] = '';
58
-
59
- $data['feedurl'][] = '';
60
-
61
- $data['feedurl'][] = '';
62
-
63
-
64
-
65
- //$data['feedurl'][] = ''; 必要な分だけ追加してください
66
-
67
-
68
-
69
- $rssList = $data['feedurl'];
70
-
71
-
72
-
73
- //同時呼び出し
74
-
75
- $rssdataRaw = multiRequest($rssList);
76
-
77
- for($n=0;$n<count($rssdataRaw);$n++){
78
-
79
- //URL設定
80
-
81
- $rssdata = simplexml_load_string($rssdataRaw[$n], 'SimpleXMLElement', LIBXML_NOCDATA);
82
-
83
- if($rssdata->channel->item) $rssdata = $rssdata->channel;
84
-
85
- if($rssdata->item){
86
-
87
- $b_title=$rssdata->title;
88
-
89
- foreach($rssdata->item as $myEntry){
90
-
91
-
92
-
93
- $rssDate = $myEntry->pubDate;
94
-
95
- if(!$rssDate) $rssDate = $myEntry->children("http://purl.org/dc/elements/1.1/")->date;
96
-
97
- date_default_timezone_set('Asia/Tokyo');
98
-
99
- $myDateGNU = strtotime($rssDate);
100
-
101
- $myDate = date('m/d',$myDateGNU);
102
-
103
- $myTitle = mb_strimwidth($myEntry->title, 0,200, "…"); //タイトル取得
104
-
105
-
106
-
107
- $myLink = $myEntry->link; //リンクURL取得
108
-
109
-
110
-
111
- $myContent = $myEntry->children('http://purl.org/rss/1.0/modules/content/');
112
-
113
- $myContent2 = $myContent->encoded;
114
-
115
-
116
-
117
- $outdata[$myDateGNU] ='<a href="' . $myLink . '" target="_blank" class="clearfix blogs">
118
-
119
- <div class="blog_t">'.$myTitle.'.'.$myDate.'.<p> </div>
120
-
121
- </div>
122
-
123
- </a>';
124
-
125
-
126
-
127
- }
128
-
129
- }
130
-
131
- }
132
-
133
-
134
-
135
- //ソート
136
-
137
- krsort($outdata);
138
-
139
-
140
-
141
- $nn = 0;
142
-
143
- $html = '';
144
-
145
-
146
-
147
- //
148
-
149
- foreach($outdata as $outdata) {
150
-
151
- $nn++;
152
-
153
- $html.= $outdata;
154
-
155
- if($nn == $hyojiNum) break;
156
-
157
- }
158
-
159
-
160
-
161
- echo $html;
162
-
163
-
164
-
165
- // ここで「echo $html」 で一覧表示できます。
166
-
167
-
168
-
169
- //ここから同時呼び出し関数
170
-
171
- function multiRequest($data, $options = array()) {
172
-
173
-
174
-
175
- // 配列を用意します。
176
-
177
- $curly = array();
178
-
179
- // data to be returned
180
-
181
- $result = array();
182
-
183
-
184
-
185
- //並列ファンクション
186
-
187
- $mh = curl_multi_init();
188
-
189
-
190
-
191
- // loop through $data and create curl handles
192
-
193
- // then add them to the multi-handle
194
-
195
- foreach ($data as $id => $d) {
196
-
197
-
198
-
199
- $curly[$id] = curl_init();
200
-
201
-
202
-
203
- $url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;
204
-
205
- curl_setopt($curly[$id], CURLOPT_URL, $url);
206
-
207
- curl_setopt($curly[$id], CURLOPT_HEADER, 0);
208
-
209
- curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);
210
-
211
-
212
-
213
- // 投稿記事があるかどうか
214
-
215
- if (is_array($d)) {
216
-
217
- if (!empty($d['post'])) {
218
-
219
- curl_setopt($curly[$id], CURLOPT_POST, 1);
220
-
221
- curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']);
222
-
223
- }
224
-
225
- }
226
-
227
-
228
-
229
- if (!empty($options)) { curl_setopt_array($curly[$id], $options);}
230
-
231
- curl_multi_add_handle($mh, $curly[$id]);
232
-
233
- }
234
-
235
-
236
-
237
- $running = null;
238
-
239
- // ハンドルを実行
240
-
241
- do {
242
-
243
- curl_multi_exec($mh, $running);
244
-
245
- } while($running > 0);
246
-
247
-
248
-
249
- foreach($curly as $id => $c) {
250
-
251
- $result[$id] = curl_multi_getcontent($c);
252
-
253
- curl_multi_remove_handle($mh, $c);
254
-
255
- }
256
-
257
-
258
-
259
- // ハンドルを閉じる
260
-
261
- curl_multi_close($mh);
262
-
263
-
264
-
265
- return $result;
266
-
267
- }
268
-
269
-
270
-
271
- ?>
272
34
 
273
35
 
274
36