実現したいこと
以下のようなテキストから
PHP
1$string = ` 2<!-- wp:group {"blockId":"001"} --> 3<div class="wp-block-group"><!-- wp:paragraph --> 4<p>text1-1</p> 5<!-- /wp:paragraph --></div> 6<!-- /wp:group --> 7 8<!-- wp:group {"blockId":"002"} --> 9<div class="wp-block-group"><!-- wp:paragraph --> 10<p>text2-1</p> 11<!-- /wp:paragraph --></div> 12<!-- /wp:group --> 13`;
block_idを指定してその中のテキストの一部を取得したいです
001を指定したら
PHP
1<!-- wp:paragraph --> 2<p>text1-1</p> 3<!-- /wp:paragraph -->
が帰ってくるようにしたいです。
試したこと
PHP
1$pattern = '/<!--\s*wp:group\s{"blockId":"[0-9]{3}"}\s-->\s<div\s*class="wp-block-group">(.*?)<\/div>\s<!--\s*\/wp:group\s*-->/s'; 2 3preg_match_all($pattern, $string, $matches);
とすると$matches[1][0]
でひとつめの
HTML
1<!-- wp:paragraph --> 2<p>text1-1</p> 3<!-- /wp:paragraph -->
は取得することはわかりました。
blockidの箇所を変数にして正規表現のパターンを変換したいのですが
PHP
1$block_id = '001'; 2// $block_idは外部から指定されます。 3$pattern = '/<!--\s*wp:group\s{"blockId":"' . $block_id .'"}\s-->\s<div\s*class="wp-block-group">(.*?)<\/div>\s<!--\s*\/wp:group\s*-->/s'; 4 5preg_match_all($pattern, $string, $matches);
このようにしてもWarning: preg_match_all(): Unknown modifier 'c'
とエラーになります。
正規表現の値を変数にするにはどのようにすれば良いでしょうか
お心優しい方アドバイスいただければと思います

回答1件
あなたの回答
tips
プレビュー