2025年05月16日
PHP関数:preg_replace()
この関数の説明
preg_replace() は文字列を正規表現で検索し、指定した文字列に置き換えるPHP関数です。
下記の様な用途に利用できます。
①文字の置換
②入力値を表示値に変換
③入力データの空白を削除する
④クラス名やID名で使える文字列に変換する
関数
preg_replace ( $search , $replace , $data )
パラメータ
$search(正規表現文字)必須
探す文字列を正規表現で指定します。
$replace(文字列)必須
置き換える文字列を指定します。
$data(文字列)必須
検索対象の文字列を指定します。
戻り値
リプレース後の文字列
利用例
下記は 'x' を '100' に置き換えます。
<?php $data = 'この商品はx円です。'; // 処理対象 $search = '/x/'; // 探す文字を正規表現で記述します。 $replace = 100; // 置き換える文字 echo preg_replace($search , $replace , $data).'<br>'; ?>
■下記データが表示されます。
この商品は100円です。
■str_replace()でも同じ事ができます。
下記は入力フォームの中のある[チェックBOX]や[radio]及び[セレクト]で選択されたValue値を表示値に変換する時によく利用されます。
<?php
$_POST['item'] = [1, 3]; //選択されたデータが入る配列です。
$item = implode(',',$_POST['item']);//配列を文字列に変換
echo '選択されたValue値は『'.$item.'』です。<br>';
$ans = preg_replace(['/1/', '/2/', '/3/'], ['項目1', '項目2', '項目3'], $item);//選択値を表示値に変換
echo '変換された表示値は『'.$ans.'』です。<br>';
?>
■下記が表示されます。
選択されたValue値は『1,3』です。
変換された表示値は『項目1,項目3』です。
■str_replace()でも同じ事ができます。
入力データの先頭や末尾に空白があると色々な問題を起こします。
下記は入力データの前と後ろにある全角スペースも含めた空白を削除する方法です。
<?php
$input = ' 山田 太郎 '; //文字の前後に半角スペース、全角スペース、タブの空白文字が入っています。
$data = preg_replace('/^[\s ]+|[\s ]+$/u' , '' , $input);
var_dump($input);echo '<br>';
var_dump($data);echo '<br>';
?>
■実行結果は下記になります。
string(23) " 山田 太郎 "
string(13) "山田 太郎"
■trim()という関数でも同様の事ができます。
④クラス名や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___山田さん_
関連情報
関連関数は 正規表現で操作する関数 を参照してください。