preg_replace(): Unknown modifier エラーの対処法


preg_replace 関数を使って以下のように正規表現で文字列指定してランダムな文字列に置き換えるコードを書きました。

$str = $txt;
$replace = substr(md5(uniqid(rand(),1)), 0, 13);
$pattern = '[a-z 0-9]{13}';

$txt_replace = preg_replace( $pattern , $replace, $str);

preg_replace(): Unknown modifier エラー

しかし以下のようなエラーが表示され、うまくいきません。

preg_replace(): Unknown modifier

デリミタで囲っていないことが原因

調べてみると、検索のパターンをデリミタ(スラッシュ(/)、ハッシュ記号(#)、チルダ(~)で囲っていないことが原因でした。
以下のように 正規表現で指定した検索文字列を「/」で囲ったらなおりました。

$str = $txt;
$replace = substr(md5(uniqid(rand(),1)), 0, 13);
$pattern = '/[a-z 1-9]{13}/';

$txt_replace = preg_replace( $pattern , $replace, $str);

コメントを残す