WordPressでRSSのカスタマイズをおこなっていて、フォーマットに合わせたコンテンツのリプレイスをおこないたいのですが思ったようにパターンがかけなかったので調べました。

今回の目的はWordPressでエディタから画像を投稿すると、pタグで覆われてimgタグが表示されるのでその場合はfigureタグとfigurecaptionを追加することです。
さらにWordPressでキャプションが設定されている画像はすでにfigureタグがついているのでその内容を消さなようにしなければいけません。

下記が最終的に実装したコードです。

[code lang=”php”]
$content = preg_replace(‘/<p>(<img [^>]*src="([^"]*)"[^>]*>)<\/p>/i’, ‘<figure>$1<figcaption></figcaption></figure>’,$content);
echo $content;

[/code]
[php 1=”preg_replace” 2=”-” 3=”wrapping” 4=”images” 5=”in” 6=”href” 7=”-” 8=”and” 9=”keeping” 10=”same” 11=”path” 12=”-” 13=”Stack” 14=”Overflow” language=”-“]/php