#特殊文字
特殊文字 | 意味 |
---|---|
* | 0回以上の繰り返し |
+ | 1回以上の繰り返し |
? | 0回または1回 |
{n} | n回の繰り返し |
{n,m} | n回からm回の繰り返し |
{n,} | n回の繰り返し |
^ | 行頭 |
¥ | 行末 |
\d | 0-9の数字1字 |
\w | アルファベットか数字かアンダースコア |
#正規表現でマッチング
preg_match(正規表現パターン,対象文字列)
//例
$input = "123-4567";
$pata = "/^\d{3}[-ー]?\d{4}$/";
if(preg_match($pata,$input)) {
echo "$inputは郵便番号の形式です";
} else {
echo "$inputは郵便番号の形式ではありません";
}
#正規表現で置換
preg_replace(正規表現パターン,変換形式,対象文字列)
//例
$input = "2015/5/25"
$pata = "/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/";
$rep = "$1年$2月$3日";
$test = preg_replace($pata,$rep,$input);
// $test == 2015年5月25日
#電話番号置き換えプログラム
正規表現で電話番号の形式をチェックし、「-」の削除、復元を行う。電話番号のデータベースへの登録、取り出しの際に利用。
//電話番号のフォーマット
class phone_formater {
//電話番号から「-」を削除
public static function replace($input) {
//「-」の空白への置き換え
$search = array("-","ー");
$result = str_replace($search,"",$input);
return $result;
}
//電話番号に「-」を追加
public static function format($input) {
//変数宣言
$category = array(
"normal" => "/^0[^346]\d{8}$/",
"mobile" => "/^\d{11}$/",
"tokyo" => "/^0[346]\d{7}$/",
"none" => "/^\d{7}$/",
);
$pattern = array(
"normal" => "/(\d{3})(\d{3})(\d{4})/",
"mobile" => "/(\d{3})(\d{4})(\d{4})/",
"tokyo" => "/(\d{2})(\d{3})(\d{4})/",
"none" => "/(\d{3})(\d{4})/",
);
$rep = array(
"normal" => "$1-$2-$3",
"none" => "$1-$2",
);
//携帯ならら
if(preg_match($category['mobile'],$input)) {
$result = preg_replace($pattern['mobile'],$rep['normal'],$input);
}
//市外局番2桁なら
elseif(preg_match($category['tokyo'],$input)) {
$result = preg_replace($pattern['tokyo'],$rep['normal'],$input);
}
//普通の市外局番なら
elseif(preg_match($category['normal'],$input)) {
$result = preg_replace($pattern['normal'],$rep['normal'],$input);
}
//市外局番なしなら
elseif(preg_match($category['none'],$input)) {
$result = preg_replace($pattern['none'],$rep['none'],$input);
}
//その他なら
else {
$result = $input;
}
return $result;
}
}
$input = 03-1234-5678;
//「-」の削除
$result1 = phone_format::replace($input);
//「-」の復元
$result2 = phone_format::format($result1);
//$result2 == 080-6520-7740
```お