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