回答編集履歴

3

追記

2016/11/26 08:48

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -31,3 +31,111 @@
31
31
  ```
32
32
 
33
33
  ※データがなかったことがわかるように、continueしないで、nullを代入しています
34
+
35
+
36
+
37
+ **(追記)**
38
+
39
+ 実際に動くコードを書いてみました。
40
+
41
+ ```php
42
+
43
+ <?php
44
+
45
+ require __DIR__ . "/vendor/autoload.php";
46
+
47
+
48
+
49
+ use Symfony\Component\DomCrawler\Crawler;
50
+
51
+ $html = "<meta charset='UTF-8'>
52
+
53
+ <div>
54
+
55
+ <ul>
56
+
57
+ <li><span>開始 12:00~</span></li>
58
+
59
+ <li><span>終了 17:00</span></li>
60
+
61
+ </ul>
62
+
63
+ <ul>
64
+
65
+ <li><span>開始 20:00~</span></li>
66
+
67
+ </ul>
68
+
69
+ <ul>
70
+
71
+ <li><span>開始 16:00~</span></li>
72
+
73
+ <li><span>終了 21:00</span></li>
74
+
75
+ </ul>
76
+
77
+ </div>
78
+
79
+ ";
80
+
81
+ $node = new Crawler($html);
82
+
83
+
84
+
85
+ $i = 0;
86
+
87
+ for($i = 0; $i < 3; $i++){
88
+
89
+ if($node->filter('div')){
90
+
91
+ $lis = $node->filter('ul')->eq($i)->filter("li");
92
+
93
+ var_dump($lis->count());
94
+
95
+ if($lis->count() <= 1) {
96
+
97
+ $time2[] = null;
98
+
99
+ } else {
100
+
101
+ $time2[] = $lis->eq(1)->text();
102
+
103
+ }
104
+
105
+ }
106
+
107
+ }
108
+
109
+ var_dump($time2);
110
+
111
+ ```
112
+
113
+
114
+
115
+ 実行結果
116
+
117
+ ```
118
+
119
+ int(2)
120
+
121
+ int(1)
122
+
123
+ int(2)
124
+
125
+ array(3) {
126
+
127
+ [0]=>
128
+
129
+ string(12) "終了 17:00"
130
+
131
+ [1]=>
132
+
133
+ NULL
134
+
135
+ [2]=>
136
+
137
+ string(12) "終了 21:00"
138
+
139
+ }
140
+
141
+ ```

2

1以下はnullが正しいのかな\.\.\.

2016/11/26 08:48

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  $lis = $node->Filter('ul')->eq($i)->Filter("li");
14
14
 
15
- if($lis->count() == 0) {
15
+ if($lis->count() <= 1) {
16
16
 
17
17
  $time2[] = null;
18
18
 

1

補足

2016/11/23 20:15

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -14,11 +14,13 @@
14
14
 
15
15
  if($lis->count() == 0) {
16
16
 
17
- continue;
17
+ $time2[] = null;
18
+
19
+ } else {
20
+
21
+ $time2[] = $lis->eq(1)->text();
18
22
 
19
23
  }
20
-
21
- $time2[] = $lis->eq(1)->text();
22
24
 
23
25
  }
24
26
 
@@ -27,3 +29,5 @@
27
29
  var_dump($time2)
28
30
 
29
31
  ```
32
+
33
+ ※データがなかったことがわかるように、continueしないで、nullを代入しています