2024年06月14日
PHP関数:preg_replace()
この関数の説明
PHP関数の preg_replace() は文字列を正規表現で検索し、指定した文字列に置き換える関数です。
関数
preg_replace ( $search , $replace , $data )
パラメータ
$search(正規表現文字)必須
探す文字列を正規表現で指定します。
$replace(文字列)必須
置き換える文字列を指定します。
$data(文字列)必須
検索対象の文字列を指定します。
戻り値
リプレース後の文字列
利用例
①文字列で検索して置き換える
<?php $data = 'abc.item.def'; $search = '/item/'; // 探す文字列は正規表現で記述します。 $replace = 'php'; $after_data = preg_replace($search , $replace , $data); echo $data.'<br>'; echo $after_data; ?>
■結果は下記になります。
abc.item.def
abc.php.def
②入力データから空白を削除する
入力データの先頭に空白があると色々な問題を起こします。
phpにはtrimという関数もありますが、これでは「全角スペース」は取り除けません。
下記は入力データから全角スペースも含めた空白を削除する方法です。
<?php $input = ' 12 '; //12の前後に半角スペース、タブ、改行、全角スペースが入っています $normal_input = preg_replace('/[\s ]+/' , '' , $input); var_dump($input);echo '<br>'; var_dump($normal_input); ?>
■実行結果は下記になります。
string(10) " 12 "
string(2) "12"
③改行コードを「,」に置き換える
WordPressのカスタムフィールドに「size」と「数値リスト」が登録されているものとします。
この場合、値は改行コードで登録されています。
このように改行で登録されているリストを「,」に置き換えるプログラムは下記になります。
<?php $input = '10 12 14 16 18'; // 改行で入力データが入っています。 $normal_input = preg_replace('/[\r\n]+/' , ',' , $input); var_dump($input);echo '<br>'; var_dump($normal_input); ?>
■結果は下記になります。
string(25) "10 12 14 16 18 "
string(25) "10, 12, 14, 16, 18 "
④クラス名やID名で使える文字列に変換する
一般的なクラス名やID名は、あらかじめ決めた命名ルールで記述するのが原則です。
しかし商品コードをクラス名に利用して、商品表示のON/OFFを制御したいケースがあります。
この様な場合は、商品コードをクラス名で利用できるコードに変更する必要があります。
<?php $code = 'abc(123)-[ABC]_{山田さん]' ; $search = '/[ -,.\/:-@\[-^`{-~]/' ; // クラス名で使えない文字を正規表現で表しています $replace = '_'; // クラス名で使える記号 $after_data = preg_replace($search , $replace , $code); echo $code.'<br>'; echo $after_data; ?>
■上記の例では()[]{}はクラス名には利用できません。そこで、これらを「_」に変更しています。
■実行結果は下記の様になります。
abc(123)-[ABC]_{山田さん]
abc_123_-_ABC___山田さん_
関連情報
関連関数は 正規表現で操作する関数 を参照してください。