PHPで正規表現を使って文字列を置換する

PHPで正規表現と一致した箇所を置換する方法です。今回は$contentに含まれる<h2>タグの前に文字列("Add")を追加するサンプルになります。

判定する正規表現
$h2 = '/<h2.*?>/i'; // <h2>タグ

最初に見つかった1回だけ置換する方法

preg_match_all() を使う

preg_match_all( $h2, $content, $matches, PREG_SET_ORDER );
if ( count( $matches ) >= 1 ) {
    $content = preg_replace( $h2, 'Add' . $matches[0][0], $content, 1 );
}

preg_match() を使う

if ( preg_match( $h2, $content, $matches ) === 1 ) {
    $content = preg_replace( $h2, 'Add' . $matches[0], $content, 1 );
}

全て置換する方法

$content = preg_replace_callback( $h2, function ( $matches ) {
    return 'Add' . $matches[0];
}, $content );

preg_replace_callback()の第4引数に数値を指定すると最大置換回数を指定できます。(デフォルトは-1で全て置換)

このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です