■正規表現の基本的な構文
◎正規表現文字
. 改行文字以外の任意の1文字
? 0回か1回だけマッチ
* 0回以上の繰り返し
+ 1回以上の繰り返し
{n} n回の繰り返し
{n,m} n回以上、m回以下の繰り返し
^ 文字列の始まり
$ 文字列の終わり
[] 文字クラス
※[a-z]の場合、「aからzまで」のいずれか1文字
\w アルファベット、数字、アンダースコア
\d 数字
\s タブ、スペース、改行などの空白文字
\S 空白以外のすべての文字
() パターンのグループ化
■例1)
携帯電話番号:$telPattern='/^(090|080|070)-?\d{4}-?\d{4}$/'
※(090-2468-1357,09024681357)にマッチ。
郵便番号:$zipPattern='/\d{3}-?\d{4}$/'
※(012-3456,0123456)にマッチ。
<分解>
''は文字列の表記、//は、preg_match()関数が正規表現を囲む仕様の為。
^(090|080|070) :090、080、070のいずれか
-? :-の文字が0回か1回(-が入っているか、または入っていない)
\d{3}、(\d{4}):数字が3(4)文字の数字
\d{4}$ :末尾が4文字の数字
■例2)
カラー指定:$color_chart=/^[a-fA-F\d]{6}$/
※カラー指定16進数6桁
■パターンマッチ関数使い方
◎preg_match() 関数
preg_match('/\d{3}-?\d{4}$/u',$text)
※uは「パターン修飾文字」で、省略化。
※UTF-8以外の文字エンコードは正しくマッチできない。
◎パターン修飾文字 - preg_match() 関数のみ
i マッチングの際、アルファベットの大文字と小文字を区別しない
m 行単位でマッチングを行なう
s 「.」 を改行文字にもマッチさせる
u パターン文字列をUTF-8エンコードとして扱う
◎mb_ereg_match() 関数
preg_match('\d{3}-?\d{4}$',$text)
■置き換え関数の使い方
・クレジットカード
$replaced = mb_ereg_replace('\d{4} ?\d{4} ?\d{4} ?\d{4}','****',$text);
・電話番号
$replaced = mb_ereg_replace('0\d{1,4}-?\d{1,4}-?\d{4}','****',$text);
※str_replace()が使えるものは使うこと(負荷が少ない)。
・URLのリンク化
$text = ereg_replace("(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)", "\\1\\2",$text);
・文字列の前後の空白(全角スペースを含む)の削除
mb_ereg_replace('^(\s| )+|(\s| )+$','',$str);
・文字列の前の空白(全角スペースを含む)の削除
mb_ereg_replace('^(\s| )+','',$str);
・文字列の後の空白(全角スペースを含む)の削除
mb_ereg_replace('(\s| )+$','',$str);