質問編集履歴
2
a
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
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
|
|