PCRE関数 2022年07月15日 17:09   編集
正規表現の特殊文字の前にバックスラッシュを挿入する。
print preg_quote('[abc].de+fg/^|h{}#12:34');

\[abc\]\.de\+fg/\^\|h\{\}\#12\:34
となる。対象文字列は
.\+*?[^]$(){}=!<>|:-#
/は正規表現の特殊文字ではない。
counter:396
PCRE関数 2016年10月04日 13:52   編集
正規表現文字をクオートする
実行時に生成される文字列をパターンとしてマッチングを行う際、文字列に正規表現の特殊文字がはいっていた場合にクォートするという使い方ができる
preg_quote( 文字列 [,デリミタ] )
正規表現の特殊文字. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -をクォートするが、/ は入っていない。/ もクォートしたい場合はデリミタに追加する
$keywords = '$40 for a g3/400';
$keywords = preg_quote($keywords, '/');
echo $keywords;
実行結果
\$40 for a g3\/400
counter:2,764
PCRE関数 2016年10月04日 13:32   編集
正規表現検索および置換を行う
preg_replace ( 検索パターン(文字列か配列) , 置換パターン(文字列か配列) , 置換対象(文字列か配列) [, 置換最大回数(int) [, 置換回数 ]] )

置換回数を使う場合は初期値を設定しておかないとエラーになる。
またその前の置換最大回数も空白のままだとエラーになる。
デフォルトの-1(無制限)などを指定する必要がある。
$str = 'a12bcd345ef6789gh01ij';
$count = 0;
$str2 = preg_replace( '/\d{3,}+/' , '□' , $str , -1 , $count );
print "\$str2=$str2\n";
print "\$count=$count\n";
実行結果
$str2=a12bcd□ef□gh01ij
$count=2
counter:2,901
PCRE関数 2016年09月30日 19:52   編集
正規表現を使って文字列を検索する
preg_match ( パターン , マッチ対象文字列 [, 検索結果 [, フラグ [, 検索の開始位置 ]]] )
$str = 'abcd0124skhe85263';
preg_match( '/\d+/', $str, $matched );
foreach ( $matched as $mtc ) {
echo $mtc . "\n";
}
実行結果
0124
counter:2,923