Smartyでpreg_replaceを使うときはregex_replace【備忘録】

2020年にsmartyの記事を書くとは思いませんでしたが、ネットショップASPではsmartyを使っているところもあるから仕方ないのです。SEO+テンプレート作成中にちょっと引っかかったので備忘録として残しておきます。

 

カラーミーをカスタマイズしたい誰かの役には立つかも知れません。

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

カラーミーのテンプレートファイルは基本smartyで作られています。smartyはなんとなくでもphpを知っていればすぐに理解できると思うので、とにかくカスタマイズしたい人はphpを学ぶと良いです。WPをさわるならphpは必須ですし、覚えて損することは決してない言語です。

 

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

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

 

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

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

広告