回答編集履歴

1

質問が変更されたので

2016/06/09 09:35

投稿

yambejp
yambejp

スコア114581

test CHANGED
@@ -1,25 +1,67 @@
1
- DOMでやってもいいですが、このくらいならpタグを抜いちゃってから
2
-
3
- 残りのソースにコメントがあるかを確認すれよいの
1
+ たとえこんな感じしょうか
4
2
 
5
3
 
6
4
 
7
5
  ```ここに言語を入力
8
6
 
9
- function check($xml){
7
+ <?PHP
10
8
 
11
- $pattern="/<p(| .*?)>.*?<\/p>/";
9
+ $xml=<<<eod
12
10
 
13
- $replacement="";
11
+ aaaaaaaaaaaaaaaaaaaaaaaa
14
12
 
15
- $xml=preg_replace($pattern,$replacement,$xml);
13
+ <p>
16
14
 
17
- $pattern="/<!--.*?-->/";
15
+ bbbbbbbbbbbbbbbbbbbbbbbb
18
16
 
19
- return preg_match($pattern,$xml);
17
+ <!--ccccccccccccccccc-->
20
18
 
21
- }
19
+ dddddddddddddddddddddddd
22
20
 
21
+ </p>
23
22
 
23
+ <p>
24
+
25
+ <!--eeeeeeeeeeeeeeeee-->
26
+
27
+ ffffffffffffffffffffffff
28
+
29
+ </p>
30
+
31
+ <p>
32
+
33
+ ggggggggggggggggggggggg
34
+
35
+ <!--hhhhhhhhhhhhhhhh-->
36
+
37
+ </p>
38
+
39
+ iiiiiiiiiiiiiiiiiiiiiii
40
+
41
+ eod;
42
+
43
+ $pattern="/(<p>[\r\n]{1,2})(.*?)(<!--.*?-->[\r\n]{1,2})(.*?)(<\/p>(?:[\r\n]{1,2}|$))/mis";
44
+
45
+ if(preg_match_all($pattern,$xml,$matches,PREG_SET_ORDER)){
46
+
47
+ foreach($matches as $match){
48
+
49
+ if($match[2]===""){
50
+
51
+ $xml=str_replace($match[0],$match[3].$match[1].$match[4].$match[5],$xml);
52
+
53
+ }elseif($match[4]===""){
54
+
55
+ $xml=str_replace($match[0],$match[1].$match[2].$match[5].$match[3],$xml);
56
+
57
+ }else{
58
+
59
+ $xml=str_replace($match[0],$match[1].$match[2].$match[5].$match[3].$match[1].$match[4].$match[5],$xml);
60
+
61
+ }
62
+
63
+ }
64
+
65
+ };
24
66
 
25
67
  ```