質問編集履歴

2

前提条件と試みたコードと結果を掲載するように修正

2018/12/26 09:55

投稿

ogaden
ogaden

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,92 +1,64 @@
1
- 以下のような内容が無いと判断するHTMLタグを削除したいのですが、正規表現の書き方を教えていただけせんでしょうか
1
+ 以下の事前処理済みのHTMLの中から内容が無いと判断する<p>タグを削除したいと思っていま
2
2
 
3
- できれば一つの正規表現で済ませたいですが数回組み合わせることで実現するものでも結構です
3
+ ・<p>タグ<br>タグ以外は**strip_tags()**にて削除
4
-
5
- また、組み立て方が分かるものであれば、省略いただいても構いません。(「あとはここに消したいパターンを追加」など)
6
4
 
7
5
 
8
6
 
9
- PHPのpreg_replace()やpreg_match()使う予定で
7
+ preg_replace()にて、以下の正規表現考えてみたものの、想の挙動になりませんした
10
8
 
9
+ 一つの<p>タグないで完結したいのですが、他の<p>タグに跨って削除されてしまうものを解消できないでしょうか。
10
+
11
- よろしくお願いいたします。
11
+ ```PHP
12
+
13
+ preg_replace( "/<(p|p\s.*)>(\r|\n|\r\n|\s| |<br>|<br />)*</p>/mis", "", $html);
14
+
15
+ ```
12
16
 
13
17
 
14
18
 
15
19
  ```html
16
20
 
17
- <!-- 削除したいHTMLタグの例 -->
21
+ <!-- 挙動が異常なケース -->
22
+
23
+ A文章がいくつかあります<br>
24
+
25
+ <p class="xxx"></p>
26
+
27
+ B文章がいくつかあります<br>
28
+
29
+ C文章がいくつかあります<br>
30
+
31
+ <p></p>
32
+
33
+ <p id="xxxx"><br></p>
34
+
35
+ D文章がいくつかあります<br>
18
36
 
19
37
 
20
38
 
21
- <!-- -->
39
+ <!-- 上記の実行結果 -->
22
40
 
23
- <p></p>
41
+ A文章がいくつかあります<br>
24
42
 
25
- <p class="xxx"></p>
26
-
27
- <!-- 半角SP -->
28
-
29
- <p> </p>
30
-
31
- <p id="xxxx"> </p>
32
-
33
- <!-- 全角SP -->
34
-
35
- <p> </p>
36
-
37
- <p id="xxxx"> </p>
38
-
39
- <!-- SP文字 -->
40
-
41
- <p>&nbsp;</p>
42
-
43
- <p id="xxxx">&nbsp;</p>
44
-
45
- <!-- 改行タグ+スペースや改行 -->
46
-
47
- <p><br></p>
48
-
49
- <p> <br></p>
50
-
51
- <p> <br> </p>
52
-
53
- <p>
54
-
55
- <br>
43
+ D文章がいくつかあります<br>
56
-
57
- </p>
58
-
59
- <p id="xxxx"><br></p>
60
-
61
- <p id="xxxx"> <br></p>
62
-
63
- <p id="xxxx"> <br> </p>
64
-
65
- <p id="xxxx">
66
-
67
- <br>
68
-
69
- </p>
70
-
71
- <!-- など、スペースや改行、改行タグ以外のテキストを含まないpタグ -->
72
44
 
73
45
 
74
46
 
75
- <!-- 削除しくないHTMLタグの例 -->
47
+ <!-- 求めてい結果 -->
76
48
 
77
- <p>けさない</p>
49
+ A文章がくつかあります<br>
78
50
 
79
- <p class="xxx">けさない</p>
80
51
 
81
- <p> けさない</p>
82
52
 
83
- <p>
53
+ B文章がいくつかあります<br>
84
54
 
85
- けさない<br>
55
+ C文章がくつかあります<br>
86
56
 
87
- </p>
88
57
 
58
+
59
+
60
+
89
- <!-- など、上記のようなパターンではある、テキストを含むpタグ -->
61
+ D文章つかあります<br>
90
62
 
91
63
 
92
64
 

1

PHPでの利用例を追記

2018/12/26 09:54

投稿

ogaden
ogaden

スコア12

test CHANGED
File without changes
test CHANGED
@@ -5,6 +5,8 @@
5
5
  また、組み立て方が分かるものであれば、省略いただいても構いません。(「あとはここに消したいパターンを追加」など)
6
6
 
7
7
 
8
+
9
+ PHPのpreg_replace()やpreg_match()を使う予定です。
8
10
 
9
11
  よろしくお願いいたします。
10
12