質問編集履歴

2

正規表現で置換スマートな書き方があれば教えていただきたい。

2020/03/27 06:54

投稿

pocoto
pocoto

スコア5

test CHANGED
File without changes
test CHANGED
File without changes

1

正規表現で置換スマートな書き方があれば教えていただきたい。

2020/03/27 06:54

投稿

pocoto
pocoto

スコア5

test CHANGED
File without changes
test CHANGED
@@ -53,3 +53,77 @@
53
53
 
54
54
 
55
55
  どなたかご教授いただければ幸いです。
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+ ### 追記
64
+
65
+ 正規表現で置換してみました!
66
+
67
+ クラスが存在するかしないかで置換方法をかえているのですが
68
+
69
+ if分使わずに正規表現でできそうなきもするのですが・・
70
+
71
+ 初心者のためもっとスマートな書き方があれば教えていただきたい。
72
+
73
+
74
+
75
+ ```php
76
+
77
+ function wporg_block_wrapper( $block_content, $block ) {
78
+
79
+ if ( $block['blockName'] === 'core/heading' ) {
80
+
81
+ // クラスが元々あるかないかで判定
82
+
83
+ if (preg_match("/class/", $block["innerHTML"])) {
84
+
85
+ $content = preg_replace(
86
+
87
+ '/<h2(.*?)class="(.*?)"(.*?)>(.*?)</h2>/',
88
+
89
+ '<h2$1class="$2 designh2"$3><span>$4</span></h2>',
90
+
91
+ $block_content);
92
+
93
+ } else {
94
+
95
+ $content = preg_replace(
96
+
97
+ '/<h2(.*?)>(.*?)</h2>/',
98
+
99
+ '<h2 class="designh2"$1><span>$2</span></h2>',
100
+
101
+ $block_content);
102
+
103
+ }
104
+
105
+ return $content;
106
+
107
+ }
108
+
109
+ return $block_content;
110
+
111
+ }
112
+
113
+
114
+
115
+ add_filter( 'render_block', 'wporg_block_wrapper', 10, 2 );
116
+
117
+ ```
118
+
119
+
120
+
121
+
122
+
123
+ ```html
124
+
125
+ <h2 class="testadmin designh2" id="anc01"><span>class and id h2</span></h2>
126
+
127
+ <h2 class="designh2"><span>simple h2</span></h2>
128
+
129
+ ```