回答編集履歴

1

条件を一つ見落としていました。

2016/05/30 13:35

投稿

oskbt
oskbt

スコア1895

test CHANGED
@@ -66,4 +66,48 @@
66
66
 
67
67
  となります。
68
68
 
69
- 完成!ヽ(=´▽`=)ノ
69
+ 完成!ヽ(=´▽`=)ノ 
70
+
71
+
72
+
73
+ ↑うそでした
74
+
75
+
76
+
77
+ ↓修正
78
+
79
+
80
+
81
+ colspanとrowspanをそれぞれ保つ場合もあることを失念してました。
82
+
83
+ なので本当は
84
+
85
+ ```php
86
+
87
+ $body = preg_replace('/<(td|th) [^>]*?((?:row|col)span=(?:"\d+"|\'\d+\'))(?:[^>]*((row|col)span=("\d+"|\'\d+\')))?[^>]*>/i', '<\1 \2 \3>', $body);
88
+
89
+ ```
90
+
91
+
92
+
93
+ です。
94
+
95
+ ちょっと解説する量が多くなるので解説はごめんなさい。パズルみたいに考えてみてください。
96
+
97
+
98
+
99
+ あと、これの後に
100
+
101
+
102
+
103
+ ```php
104
+
105
+ $body = preg_replace('/<(td|th) +>/i','<td>',$body)
106
+
107
+ ```
108
+
109
+
110
+
111
+ を更に入れておくと吐き出されるHTMLソースが綺麗になります。
112
+
113
+