質問: 正規表現について質問させてください。 ``` 〇〇さん(@〇〇)がシェアした投稿 - 2017年0月0月0日午後0時0分PST ``` wordpressにてサイトを運営しているのですが、自作したあるRSSフィードにおいて、上記インスタグラムの埋め込みコードなどはそのフィード上で配信したくない場合があり、これを削除した記事フィードを作りたいと考えております。 アイテムを丸ごと消すのではなく、あくまでそのアイテム内の特定の部分のみを消したいのですが、 上記のようなインスタグラムの埋め込みタグを記事内で削除したい場合、正規表現の書き方がわからず困っております。 例えば [igdel]埋め込みタグ[/igdel] などのように特定のワードプレスショートコードで囲む場合、その中身だけを正規表現で消すコードを教えていただきたいです。 /\[igdel\]*?\[\/igdel\]/s など、正規表現チェッカーで色々試してみましたがダメでした。 厳密にいうとショートコードを使うわけではないのですが、上記の方法で指定した範囲をどんな要素でも消せるのが理想です。 ``` 例 あいうえお [igdel] かきくけこ [/igdel] さしすせそ [igdel] たちつてと [/igdel] ``` 恐れ入りますがどうぞよろしくお願いいたします。
回答: 例の正規表現は `*` の前に `.` が足りないですね。 あとは、ショートコードを括弧で囲って `preg_replace()` の第二引数で `$1$2` のように書いてやれば実現できます。 ``` あいうえお [igdel] かきくけこ [/igdel] さしすせそ [igdel] たちつてと [/igdel] EOF; echo preg_replace("/(\[igdel\]).*?(\[\/igdel\])/s", "$1$2", $input); ``` **出力↓** ``` あいうえお [igdel][/igdel] さしすせそ [igdel][/igdel] ```