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

回答編集履歴

1

質問が変更されたので

2016/06/09 09:35

投稿

yambejp
yambejp

スコア117906

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