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

回答編集履歴

5

テキスト修正

2018/01/02 14:51

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -112,4 +112,8 @@
112
112
  上記は、あくまで、たとえばの話ですが、このようなルールがあれば、
113
113
  `<div class="box">・・・</div>` を文字列で取り出すのは
114
114
  それほど大変ではなく、文字列で取り出せさえすれば正規表現という
115
- 強力な武器を使えます。
115
+ 強力な武器を使えます。
116
+
117
+ ※ただし、`<div class="box">` の直下であれば、どの位置にあっても、
118
+ そのテキストノードを正規表現で取り出せるか?といえば、それは微妙です。
119
+ (いろいろ言ってすみません。)

4

テキスト修正

2018/01/02 14:51

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,7 @@
1
1
  こんにちは。
2
2
 
3
- 少し調べてみましたがどうやらphpQueryでは、
3
+ 少し調べてみましたがどうやらphpQueryでは、HiruLowさんも苦心されたとおり、
4
+
4
5
  > 子階層(のテキスト)まで取得しない
5
6
 
6
7
  ようにするのが難しそうです。

3

テキスト修正

2018/01/02 11:23

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -108,5 +108,7 @@
108
108
  </div><!-- end of box -->
109
109
  ```
110
110
 
111
+ 上記は、あくまで、たとえばの話ですが、このようなルールがあれば、
111
- 上記のようなルールがあれば、`<div class="box">・・・</div>` を文字列で取り出すのは
112
+ `<div class="box">・・・</div>` を文字列で取り出すのは
112
- それほど大変ではなく、文字列で取り出せさえすれば正規表現という強力な武器を使えます。
113
+ それほど大変ではなく、文字列で取り出せさえすれば正規表現という
114
+ 強力な武器を使えます。

2

テキスト修正、追加

2018/01/02 11:15

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -75,4 +75,38 @@
75
75
 
76
76
  ![イメージ説明](ff13970edf0c484346fa7ceb83d8c4a7.png)
77
77
 
78
- 以上参考になれば幸いです。
78
+ 以上参考になれば幸いです。
79
+
80
+ ---
81
+ 追記
82
+
83
+
84
+ もう1案あるのですが、処理対象の HTML の中で、`<div class="box">` と、
85
+ これの閉じタグである `</div>` が現れる行に何らかの規則があるのだったら、
86
+ HTMLパーサーを使わずに、HTMLを普通のテキストとして1行1行読んでいき、
87
+ この何らかの規則にそって、`<div class="box">`から `</div>` までの
88
+ 複数行(あるいは1行)をひとつの文字列として取り込んで、あとは、
89
+ その文字列に対して正規表現で欲しい部分をキャプチャするという手もあると
90
+ 思います。
91
+
92
+ 上記で、「何らかの規則」と書いた具体例としては
93
+ たとえば以下のような2つのルールが考えられます。
94
+
95
+ 1. <div class="box"> が出現するときは、必ず1行の中に入っている。
96
+
97
+  これはたとえば
98
+ ```html
99
+ <div
100
+ class="box"
101
+ >
102
+ ```
103
+ のようになっていることはない、ということを意味します。
104
+
105
+ 2. <div class="box"> の閉じタグ </div> の直後には <!-- end of box --> というコメントがある。
106
+
107
+ ```html
108
+ </div><!-- end of box -->
109
+ ```
110
+
111
+ 上記のようなルールがあれば、`<div class="box">・・・</div>` を文字列で取り出すのは
112
+ それほど大変ではなく、文字列で取り出せさえすれば正規表現という強力な武器を使えます。

1

テキスト修正

2018/01/02 11:10

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  こんにちは。
2
2
 
3
3
  少し調べてみましたがどうやらphpQueryでは、
4
- > 子階層まで取得しない
4
+ > 子階層(のテキスト)まで取得しない
5
5
 
6
6
  ようにするのが難しそうです。
7
7