2021.08.24PHPで文字列を置換する際に使う関数の基本的な使い方を紹介します。動的なデータの操作やソースコードの整形等に利用でき、WordPressのカスタマイズにも応用できます。日本語OK】preg_replace()の使い方preg_replace()の使用例PHPで文字列を置換する方法いくつかの代表的な関数がある文字列を置換するためのPHPの関数はいくつかあり、どれを使えばいいのか迷ってしまいます。今回は文字列置換を行うための代表的な関数であるstr_replace()とsubstr_replace()、preg_replace()を紹介します。関数の選び方それぞれの特徴は、シンプルで軽快なstr_replace()とsubstr_replace()、万能なpreg_replace()といった感じです。そのため、まずはstr_replace()又はsubstr_replace()を検討し、これらでは対応できない場合にpreg_replace()を使うと良いと思います。);対象となる文字列もしくは配列に含まれる文字列を指定して置換します。$subjectに含まれる$searchを全て$replaceに置換します。$count(省略可)がある場合は置換回数が格納されます。日本語(マルチバイト文字)にも対応しています。基本的な置換3行目ではテキストを置換(マンガ→小説)、6行目ではHTMLタグを置換(p→h1)しています。'h1>'のように指定することで閉じタグも置換対象となるようにしています。'<p>今日はマンガを読みました。置換したものを書き出し実行結果<p>今日は小説を読みました。</p><h1>今日はマンガを読みました。検索文字列と置き換える文字列を配列にした場合の例になります。マンガ→小説」と処理されます。'<p>今日はマンガを読みました。"\n";実行結果<p>昨日は小説を読みました。複数の検索文字列に対して置き換える文字列が1つの場合、それぞれが置き換える文字列に置換されます。次の例では3つの文字列がそれぞれ空に置換されています。'<p>今日はマンガを読みました。);実行結果<p>今日マンガ読。置き換える文字列に""(空)を指定すると検索文字列を削除するのと同じことになります。検索文字列の数に対して置き換える文字列が少ない場合、足りない部分は空として扱われます。マンガ→休み」、「を読みました→空」と置換されます。'<p>今日はマンガを読みました。);実行結果<p>明日は休み。記事ではstr_replace()を使ってWordPressが書き出すデフォルトのクラス名を任意のものに書き換えました。wp_list_categories()のデフォルトのクラス名を書き換える【WordPress/PHP】WordPressではテンプレートタグを使って色々な要素を出力できますがデフォルトで付与されるクラス名をサイトに合わせて変更したい場合もあるかと思います。(私はBEMによる命名規則に合わせたいときに変更したくなりました。);対象の文字列の指定範囲を置換します。対象文字列$stringの置換開始位置$offsetと置換範囲$length(省略可)を指定し$replaceに置換します。$lengthを省略した場合は開始位置から最後までとなります。開始位置は0から始まるインデックスで指定するため、0を指定した場合は1文字目となります。日本語(マルチバイト文字)の場合は非対応のためpreg_replace()を使います。置換したものを書き出し3行目は文字列$stringのインデックスが5の位置(0から数えるので実際には6文字目のA)以降を「DUNK」に置換しています。6行目では開始位置は同じですが置換範囲10文字の指定があるの、11文字目以降はそのまま残ります。従って次のような実行結果になります。);対象文字列を正規表現で検索して置換します。対象文字列$subjectを正規表現$patternで検索して$replacementに置換します。substr_replace()では対応できない詳細な検索が必要な場合に使います。検索対象の文字数が少ない場合はstr_replace()で間に合うことが多いです。次の例文$subjectの価格の箇所を置換してHTMLタグを追加してみます。数値が012と14800の2か所ありますが正規表現で価格の数値のみ該当するようにします。今回は説明のためカンマ無しの表記にしています。'<p>品番012のスニーカーは14800円です。$str;2行目の/\d+円/uの部分が正規表現です。今回は「直後に”円”の付く1つ以上の数字」という指定をしています。該当箇所が$replacementに置換されるので実行結果は次のようになります。実行結果<p>品番012のスニーカーは<strong>14800円</strong>です。</p>倉庫番この方法には問題があり、対象文字列に異なる価格があった場合にこの方法では全てが14800円に置換されてしまいます。異なる価格にも対応するためには次のようなサブパターンを使う等、正規表現の記述を工夫する必要があります。)で括るとサブパターンとなり、出現順に$1、$2、$3と表すことができます。'<p>品番012のスニーカーは14800円、品番013は19800円です。$str;上の例では14800円、19800円の2か所が正規表現に該当しています。)で括ることでサブパターンとなり、置換文字列$replacementに$1と書くことで元の文字列がそのまま流用されます。実行すると14800円、19800円の部分はそのままに、<strong>タグのみが追加されているのが分かります。実行結果<p>品番012のスニーカーは<strong>14800円</strong>、品番013は<strong>19800円</strong>です。ウェブ倉庫.メニューホームウェブ制作ホビーお問い合わせホーム検索トップサイドバータイトルとURLをコピーしました。