2022年04月23日

PHP関数:preg_match()

この関数の説明

PHP関数の preg_match() は、

①文字列から正規表現にマッチするデータを取り出す

②文字列を正規表現(電話番号等)でチェックする

する関数です。

 


関数

preg_match( $search , $data , $array )

 


パラメータ

$search(正規表現文字)必須

チェックする内容を正規表現で指定します。

 

$data (文字列)必須

サーチする文字列を指定します。

 

$array(配列)(オプション)

正規表現にマッチしたデータを取り出す配列名を指定します。

この関数は発見したデータは1つしか取り出せません。

総て取り出す場合は、preg_match_all() を利用します。

 


戻り値

マッチした場合に 1 を返します。 マッチしなかった場合は 0 を返します。

 


利用例

①電話番号を取り出す。

<?php 
    $data='電話番号:080-992-1234';
    preg_match('/0\d{1,2}-\d{3,4}-\d{4}/' , $data , $tel_number);
    echo $tel_number[0];
?>
<pre>
   <?php print_r($tel_number);?>
</pre>

■実行結果は下記になります。

080-992-1234

   Array
(
    [0] => 080-992-1234
)

■電話番号のルール

・先頭番号は0で始まる2桁か3桁の数字:0\d{1,2}

・2番目の番号は3桁か4桁の数字:\d{3,4}

・3番目の番号は4桁の数字:\d{4}

 

②電話番号の正当性をチェックする。

<?php 
    $tel_number='080-992-1234';
    $Judgment = preg_match('/^0\d{1,2}-\d{3,4}-\d{4}$/' , $tel_number );
    echo $Judgment ? '正しい電話番号です' :'電話番号を再確認して下さい';
?>

■下記が表示されます。

正しい電話番号です

■ポイントは先頭の(^)と末尾の($)で電話番号ルールを括っています。

これを指定しないと「abc080-992-1234」でも文字列の中に電話番号があるので正しいと判断します。

■4行目:三項演算子を使ったif文を利用しています。

 

③郵便番号をチェックする

郵便番号は「3桁の数字-4桁の数字」のルールがあります。

これをチェックする方法は下記になります。

<?php 
	$data='123-0123';
	$Judgment = preg_match('/^\d{3}-\d{4}$/' , $data );
	echo $data.'<br>';
	echo $Judgment ? '正しい郵便番号です' :'郵便番号に間違いがあります';
?>

■上記の結果は下記が表示されます。

123-0123
正しい郵便番号です

■郵便番号のルール

・先頭番号は3桁の数字:\d{3}

・2番目は4桁の数字:\d{4}

■チェックなので先頭(^)、末尾($)で括っています。

郵便番号を取り出す場合はこれを指定しないで使います。

■5行目:三項演算子を使ったif文を利用しています。

 

④メールアドレスをチェックする

メールアドレスは厳密なチェックはできない事を理解して下さい。

例えばGmailの場合は「_」は使用できない記号ですが、下記のルールでは正しいメールアドレスと判定されます。

<?php 
	$email = '[email protected]';
	$Judgment = preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/' , $email );
	echo $email.'<br>';
	echo $Judgment ? ' 正しいと思われるメールアドレスです' :' メールアドレスに間違いがあります';
?>

■上記の結果は下記になります。

[email protected]
正しいと思われるメールアドレスです

■チェックなので先頭(^)、末尾($)で括っています。

■5行目:三項演算子を使ったif文を利用しています。

 

⑤現在のページを判断する

<?php 
	$url = get_the_permalink();
	$Judgment = preg_match('/php/' , $url );
	echo $Judgment ? 'PHPページ' :'PHP以外のページ';
?>

■この関数は表示中のページが該当ページか?否かの判断によく使われます。

■PHPカテゴリページの場合は「PHPページ」が表示されます。

■4行目:三項演算子を使ったif文を利用しています。

 

⑥入力フィールドにデータがあるか否かを判断する

<?php 
	$input='  	';
	$Judgment = preg_match('/[^\s ]/' , $input );
	echo $Judgment ? 'データがあります' :'データは空です';
?>

■上記の$iputには、半角スペース、全角スペース、タブが入力されています。

■結果は下記が表示されます。

データは空です

■正規表現のポイント

上記では[]の中で(^)を使っていますが、これは否定を表します。

よって[^\s ]は、半角のスペースや全角のスペース以外の文字があるかを判定しています。

■4行目:三項演算子を使ったif文を利用しています。

 


関連情報

関連関数は 正規表現で操作する関数 を参照してください。

 

関数一覧
  • 1.PHPとWordPressプログラム
  • 2.PHPの出力コマンド
  • 3.PHPの変数規則と文字連結
  • 4.PHPのif文
  • 5.PHPの配列とループ処理
  • 6.PHPのオブジェクトとループ処理
  • 7.PHPの文字列操作関数
  • 8.PHPファイルや関数の読み込み
  • 9.PHPのフォーム操作
  • array_keys()
  • array_reverse()
  • checkdate()
  • count()
  • date()
  • echo
  • explode()
  • implode()
  • in_array()
  • intval()
  • isset()
  • preg_match_all()
  • preg_match()
  • preg_replace()
  • preg_split()
  • print_r()
  • session_id()
  • session_start()
  • sprintf()
  • str_replace()
  • strpos()
  • trim()
  • var_dump()