You are here

phone.ca.inc in Phone 5

Same filename and directory in other branches
  1. 6 phone.ca.inc

File

phone.ca.inc
View source
<?php

/**
 * Verifies that $phonenumber is a valid ten-digit North American phone number
 *
 * @param string $phonenumber
 * @return boolean Returns boolean FALSE if the phone number is not valid. 
 */
function valid_ca_phone_number($phonenumber) {

  //$phonenumber = trim($phonenumber);

  // define regular expression
  $regex = "/\n    \\D*           # ignore non-digits\n    1?            # an optional 1\n    \\D*           # optional separator \n    [02-9]\\d{2}   # area code (can't start with 1)\n    \\D*           # optional separator\n    \\d{3}         # 3-digit prefix\n    \\D*           # optional separator\n    \\d{4}         # 4-digit line number\n    \\D*           # optional separator\n    \\d*           # optional extension\n    \\D*           # ignore trailing non-digits\n    /x";

  // return true if valid, false otherwise
  return (bool) preg_match($regex, $phonenumber);
}

/**
 * Convert a valid North American phone number into standard (444) 867-5309 x1234 format
 * 
 * @param $phonenumber must be a valid ten-digit number (with optional extension)
 * 
 */
function format_ca_phone_number($phonenumber, $field) {

  // define regular expression
  $regex = "/\n    ^\\D*          # ignore non-digits\n    1?            # an optional 1\n    \\D*           # optional separator \n    ([2-9]\\d{2})  # capture area code       \n    \\D*           # optional separator\n    ([2-9]\\d{2})  # capture 3-digit prefix\n    \\D*           # optional separator\n    (\\d{4})       # capture 4-digit line number                       \n    \\D*           # optional separator\n    (\\d*)         # capture optional extension                       \n    \\D*\$          # ignore trailing non-digits\n  /x";

  // get digits of phone number
  preg_match($regex, $phonenumber, $matches);

  // construct ten-digit phone number
  $phonenumber = $matches[1] . '-' . $matches[2] . '-' . $matches[3];

  // Optional extension
  if ($matches[4] != '') {
    $phonenumber .= $matches[4];
  }
  if ($field['phone_country_code']) {
    if ($matches[1] != "1") {
      $phonenumber = "1" . " " . $phonenumber;
    }
  }
  return $phonenumber;
}

Functions

Namesort descending Description
format_ca_phone_number Convert a valid North American phone number into standard (444) 867-5309 x1234 format
valid_ca_phone_number Verifies that $phonenumber is a valid ten-digit North American phone number