Smartyの正規表現置き換えにはpreg_replaceではなくregex_replace【備忘録】

テンプレート作成中にちょっと引っかかったので備忘録として残しておきます。カラーミーショップをカスタマイズしたい誰かの役に立つかも知れません。

文字列から数字を削除、または数字を取り出したい

カラーミーのテンプレートファイルは基本smartyで作られています(バージョンは2.6)。

smartyはなんとなくでもphpを知っていればすぐに理解できると思うので、とにかくカスタマイズしたい人はphpを学ぶと良いです。WPをさわるならphpは必須ですし、覚えて損することは決してない言語です。

今回、カラーミーの変数(= 独自タグ)から数値のみを取り出したい場面がありまして、preg_replaceで置き換えしようとしたらエラー

何でかなと思ったら、smartyではregex_replaceを使うようです。

正解を書いておくとこうなります。

// 例1:$hogeから文字だけを取り出す
{$hoge|regex_replace:/[0-9]/:""}

// 例2:hogeから数字だけを取り出す
{$hoge|regex_replace:/[^0-9]/:""}
  1. 検索語を正規表現でチェックするので「/正規表現/」のように「/」で囲む。
  2. [0-9]は文字クラス。0〜9のいずれかに該当するか検索。例えば[a-z]ならアルファベット小文字を検索。
  3. 文字クラス[ ]内の「^」は否定。0〜9以外( = 文字)を検索。
  4. 検索した語を ”” (空白)で置き換えする = 削除 という流れ。
タイトルとURLをコピーしました