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

質問編集履歴

2

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

2020/03/27 06:54

投稿

pocoto
pocoto

スコア5

title CHANGED
File without changes
body CHANGED
File without changes

1

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

2020/03/27 06:54

投稿

pocoto
pocoto

スコア5

title CHANGED
File without changes
body CHANGED
@@ -25,4 +25,41 @@
25
25
  );
26
26
  ```
27
27
 
28
- どなたかご教授いただければ幸いです。
28
+ どなたかご教授いただければ幸いです。
29
+
30
+
31
+
32
+ ### 追記
33
+ 正規表現で置換してみました!
34
+ クラスが存在するかしないかで置換方法をかえているのですが
35
+ if分使わずに正規表現でできそうなきもするのですが・・
36
+ 初心者のためもっとスマートな書き方があれば教えていただきたい。
37
+
38
+ ```php
39
+ function wporg_block_wrapper( $block_content, $block ) {
40
+ if ( $block['blockName'] === 'core/heading' ) {
41
+ // クラスが元々あるかないかで判定
42
+ if (preg_match("/class/", $block["innerHTML"])) {
43
+ $content = preg_replace(
44
+ '/<h2(.*?)class="(.*?)"(.*?)>(.*?)</h2>/',
45
+ '<h2$1class="$2 designh2"$3><span>$4</span></h2>',
46
+ $block_content);
47
+ } else {
48
+ $content = preg_replace(
49
+ '/<h2(.*?)>(.*?)</h2>/',
50
+ '<h2 class="designh2"$1><span>$2</span></h2>',
51
+ $block_content);
52
+ }
53
+ return $content;
54
+ }
55
+ return $block_content;
56
+ }
57
+
58
+ add_filter( 'render_block', 'wporg_block_wrapper', 10, 2 );
59
+ ```
60
+
61
+
62
+ ```html
63
+ <h2 class="testadmin designh2" id="anc01"><span>class and id h2</span></h2>
64
+ <h2 class="designh2"><span>simple h2</span></h2>
65
+ ```