• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:wordpressでthe_content内の置換)

wordpressでthe_content内の置換方法

このQ&Aのポイント
  • wordpressのthe_content内で<h3>...</h3>が見つかった場合に、<h3><span>...</span></h3>に置き換える方法を考えています。
  • functions.phpのadd_filterを使用して、the_contentフィルターフックを使い、preg_replaceを使って正規表現マッチの置換を行います。
  • preg_replaceを使用する際に、正規表現パターンと置換文字列を指定することで、<h3>タグを正しく変換することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

ざっくりこんな感じ? <?PHP $html=<<<EOF <html> <head> <title>test</title> </head> <body> <h3>test1</h3> <p>test2</p> <h3>test3</h3> <p>test4</p> <h3 id="xxx" class="yyy zzz">test5</h3> <p>test6</p> </body> </html> EOF; print "余計なデータがない<br>\n"; $pattern="/(?<=<h3>).*?(?=<\\/h3>)/mis"; $replacement="<span>$0</span>"; $result=preg_replace($pattern,$replacement,$html); print nl2br(htmlspecialchars($result)); print "<hr>"; print "idやclass付<br>\n"; $pattern="/(<h3(?:| .*?)>)(.*?)(<\\/h3>)/mis"; $replacement="$1<span>$2</span>$3"; $result=preg_replace($pattern,$replacement,$html); print nl2br(htmlspecialchars($result));

toggle
質問者

お礼

意図した通りに動きました。 wordpressが自動で吐き出すp、brタグも生きた状態で表示したかったので、functions.phpに下記のコードを記入してバッチ師動きました。 function add_h3_placeholders( $content ) { $content = preg_replace( '/(<h3(?:| .*?)>)(.*?)(<\\/h3>)/mis','<h3><span>$2</span>$3', $content ); return $content; } add_filter( 'the_content', 'add_h3_placeholders', 99 ); とても勉強になりました。 ありがとうございます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

<h3>にidやclassは絶対にない仕様かどうかによって書き方が変わると思います <h3 id="xxx" class="yyy zzz">hoge</h3> にマッチさせるかどうかということ

toggle
質問者

補足

今現在ではid、classは使う予定はないですが、使う場合があるかもしれません。 ある場合と、ない場合の方法が知りたいです。

関連するQ&A