カナダの社会保障番号は、カナダ人全員が所持する SIS カードに記載されています。
チェックデジットは最後の桁で、標準の _get_control_number 関数で計算します。
<?php // パッケージをインクルードします require_once('Validate/CA.php'); $badSsn = '012345674'; $result = Validate_CA::ssn($badSsn); echo 'Test ' . $badSsn .' : <br />'; var_export($result); echo '<br /><br />'; $goodSsn = '123456782'; $result = Validate_CA::ssn($goodSsn); echo 'Test ' . $goodSsn .' : <br />'; var_export($result); ?> |
出力はこのようになります。
Test 012345674 : false Test 123456782 : true |
郵便番号は六文字で表され、ANA NAN 形式となります。 "A" はアルファベット、そして "N" は数字です。
郵便番号はふたつの部分に分かれています。
最初の三文字 (アルファベット - 数字 - アルファベット) が Forward Sortation Area (FSA) です。
これが、その都市または地方の大まかな位置を表します。
FSA の三番目の文字 (M4B) を最初の二つの文字と組み合わせることで、 市、町などの地理的な範囲が決まります。
後半の部分 (数字 - アルファベット - 数字) が Local Delivery Unit (LDU) です。
これは forward sortation area 内での詳細な配送単位を表します。
LDU すなわち郵便番号の最後の三文字で、 FSA 内における最終的な場所が決まります。
都市部においては、この最後の三文字が表す範囲は特定のブロック (交差点で囲まれたひとつの区画) であったりひとつの建物であったり、 ときには大口の受取者であったりすることもあります。
郊外では、最後の三文字 (LDU) と FSA から特定の集落を決定します。
最初のパラメータに、調べたい郵便番号を指定します。
オプションのパラメータで、特定の地域にのみ範囲を絞ります。
<?php // パッケージをインクルードします require_once('Validate/CA.php'); $badPostCode = '48103'; $result = Validate_CA::postalCode($badPostCode); echo 'Test ' . $badPostCode .' : <br />'; var_export($result); echo '<br /><br />'; $goodPostCode = 'H2M 2J1'; $result = Validate_CA::postalCode($goodPostCode); echo 'Test ' . $goodPostCode .' : <br />'; var_export($result); ?> |
出力はこのようになります。
Test 48103 : false Test H2M 2J1 : true |
H2M 2J1 は正しい郵便番号のように見えますが、その地域には存在しません。
<?php // パッケージをインクルードします require_once('Validate/CA.php'); $postalCode = 'H2M 2J1'; // モントリオール近辺 $result = Validate_CA::postalCode($postalCode); echo 'Test ' . $postalCode .' : <br />'; var_export($result); echo '<br /><br />'; $result = Validate_CA::postalCode($postalCode,'QC'); // QC はモントリオールを表します echo 'Test ' . $postalCode .' in QC: <br />'; var_export($result); echo '<br /><br />'; $result = Validate_CA::postalCode($postalCode,'AB'); // AB はトロントを表します echo 'Test ' . $postalCode .' in AB: <br />'; var_export($result); ?> |
出力はこのようになります。
Test H2M 2J1 : true Test H2M 2J1 in QC: true Test H2M 2J1 in AB: false |
カナダとアメリカの電話番号体系は同じです。というわけで Validate_US::phoneNumber() をコールすることもできます。
7 桁の数字のみを許可します。
(xxx) xxx-xxxx、xxx xxx-xxxx、 そして x (xxx) xxx-xxxx といった形式でも許可しますし、 スペースやダッシュを含まない形式でも許可します。
<?php // パッケージをインクルードします require_once('Validate/CA.php'); $phoneNumber = '467875098x'; $result = Validate_CA::phoneNumber($phoneNumber); echo 'Test ' . $phoneNumber .' : <br />'; var_export($result); echo '<br />'; $phoneNumber = '4678750987'; $result = Validate_CA::phoneNumber($phoneNumber); echo 'Test ' . $phoneNumber .' : <br />'; var_export($result); ?> |
出力はこのようになります。
Test 467875098x : false Test 4678750987 : true |
パラメータつきの例です。
<?php // パッケージをインクルードします require_once('Validate/CA.php'); $phoneNumber = '8750987'; $result = Validate_CA::phoneNumber($phoneNumber,false); echo 'Test ' . $phoneNumber .' : <br />'; var_export($result); echo '<br /><br />'; $phoneNumber = '8750987'; echo 'Test ' . $phoneNumber .' : <br />'; echo 'With $requireAreaCode false <br />'; $result = Validate_CA::phoneNumber($phoneNumber,false); var_export($result); echo '<br />'; echo 'With $requireAreaCode true<br />'; $result = Validate_CA::phoneNumber($phoneNumber,true); var_export($result); echo '<br /><br />'; $phoneNumber = '(467)8750987'; echo 'Test ' . $phoneNumber .' : <br />'; echo 'With $requireAreaCode false <br />'; $result = Validate_CA::phoneNumber($phoneNumber,false); var_export($result); echo '<br />'; echo 'With $requireAreaCode true<br />'; $result = Validate_CA::phoneNumber($phoneNumber,true); var_export($result); ?> |
出力はこのようになります。
Test 8750987 : true Test 8750987 : With $requireAreaCode false true With $requireAreaCode true false Test (467)8750987 : With $requireAreaCode false false With $requireAreaCode true true |