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

回答編集履歴

3

追加

2018/10/31 11:32

投稿

otn
otn

スコア86341

answer CHANGED
@@ -27,4 +27,17 @@
27
27
  int(24)
28
28
  }
29
29
  ```
30
- になるので、ちゃんと1件除外されて、24件抽出できているようです。
30
+ になるので、ちゃんと1件除外されて、24件抽出できているようです。
31
+ #追記2
32
+ `item(0)`の`nodeValue`は空で正常でしょう。
33
+ `item(0)->nodeValue`から`item(23)->nodeValue`までを繋ぎます。
34
+
35
+ ```PHP
36
+ $body = $xpath->query('//body/*[not(self::header)]');
37
+ $nodevalue="";
38
+ for($i=0; $i<$body->length; $i++){
39
+ $nodevalue .= $body->item($i)->nodeValue;
40
+ }
41
+ echo($nodevalue);
42
+ ```
43
+ `script`タグの内容がじゃまな気がします。

2

補足

2018/10/31 11:32

投稿

otn
otn

スコア86341

answer CHANGED
@@ -2,6 +2,13 @@
2
2
  `header`ノードを`removeChild`するのでしょうね。
3
3
 
4
4
  #追記
5
+ > headerタグを抜いた状態のbodyタグを抽出したい
6
+
7
+ ではなく、
8
+ > bodyタグの子要素のうちheaderタグ以外のタグを抽出したい
9
+
10
+ ということで。
11
+
5
12
  ```PHP
6
13
  $all = $xpath->query('//body/*');
7
14
  $not_header = $xpath->query('//body/*[not(self::header)]');

1

コメントを受けての追記

2018/10/26 00:26

投稿

otn
otn

スコア86341

answer CHANGED
@@ -1,2 +1,23 @@
1
1
  XPathでは無理では?
2
- `header`ノードを`removeChild`するのでしょうね。
2
+ `header`ノードを`removeChild`するのでしょうね。
3
+
4
+ #追記
5
+ ```PHP
6
+ $all = $xpath->query('//body/*');
7
+ $not_header = $xpath->query('//body/*[not(self::header)]');
8
+
9
+ var_dump($all);
10
+ var_dump($not_header);
11
+ ```
12
+ で、
13
+ ```Plain
14
+ object(DOMNodeList)#28 (1) {
15
+ ["length"]=>
16
+ int(25)
17
+ }
18
+ object(DOMNodeList)#29 (1) {
19
+ ["length"]=>
20
+ int(24)
21
+ }
22
+ ```
23
+ になるので、ちゃんと1件除外されて、24件抽出できているようです。