You are here

phone.il.inc in Phone 7

CCK Field for Isreali phone numbers.

File

include/phone.il.inc
View source
<?php

//drived from au module and manipulated by Moshe Beeri, email: moshe.beeri (at-shetrudel) google mail

/**
* @file
* CCK Field for Isreali phone numbers.
*/
function phone_il_metadata() {
  return array(
    'error' => '"%value" is not a valid Israeli phone number',
  );
}

/**
* Verification for Israel Phone Numbers.
*
* @param string $phonenumber
* @return boolean Returns boolean FALSE if the phone number is not valid.
*/
function valid_il_phone_number($phonenumber) {

  //$phonenumber = trim($phonenumber);

  // strip formatting chars
  $phonenumber = preg_replace('/[\\-() ]/', '', $phonenumber);

  // strip optional '+972' or '0' prefixes
  $phonenumber = preg_replace('/^(\\+972)/', '', $phonenumber);

  //$rules[] = array("Prefix","Minimum length","Maximum length");

  //http://he.wikipedia.org/wiki/%D7%A7%D7%99%D7%93%D7%95%D7%9E%D7%AA_%D7%98%D7%9C%D7%A4%D7%95%D7%9F
  $rules[] = array(
    "02",
    7,
    10,
  );
  $rules[] = array(
    "03",
    7,
    10,
  );
  $rules[] = array(
    "04",
    7,
    10,
  );
  $rules[] = array(
    "08",
    7,
    10,
  );
  $rules[] = array(
    "09",
    7,
    10,
  );
  $rules[] = array(
    "072",
    7,
    10,
  );
  $rules[] = array(
    "073",
    7,
    10,
  );
  $rules[] = array(
    "074",
    7,
    10,
  );
  $rules[] = array(
    "076",
    7,
    10,
  );
  $rules[] = array(
    "077",
    7,
    10,
  );
  $rules[] = array(
    "078",
    7,
    10,
  );
  $rules[] = array(
    "050",
    7,
    10,
  );
  $rules[] = array(
    "052",
    7,
    10,
  );
  $rules[] = array(
    "054",
    7,
    10,
  );
  $rules[] = array(
    "057",
    7,
    10,
  );
  $rules[] = array(
    "1800",
    6,
    10,
  );
  $rules[] = array(
    "1801",
    6,
    10,
  );
  $rules[] = array(
    "1700",
    6,
    10,
  );
  foreach ($rules as $rule) {
    if (preg_match('/^' . $rule[0] . '/', $phonenumber) && strlen($phonenumber) >= $rule[1] && strlen($phonenumber) <= $rule[2]) {
      return TRUE;
    }
  }
  return FALSE;
}

/**
* Formatting for Israeli Phone Numbers. Based upon ITU-T E.123 (but let's not get too crazy)
*
* @param string $phonenumber
* @return string Returns a string containing the phone number with some formatting.
*/
function format_il_phone_number($phonenumber) {
  $prefix = '';
  $extension = '';

  // strip old formatting chars
  $phonenumber = preg_replace('/[\\-() ]/', '', $phonenumber);

  /*
   * strip and save the +9726 prefix if found
   */
  if (preg_match('/^\\+972/', $phonenumber, $match)) {
    $prefix = '+972 ';
    $phonenumber = str_replace('+972', '', $phonenumber);
  }

  /*
   * 9 phones digit numbers
   * Eg. 03 9999 999
   */
  if (preg_match('/^([0-9]{2})([0-9]{4})([0-9]{3})$/', $phonenumber, $match)) {
    return $prefix . $match[1] . ' ' . $match[2] . ' ' . $match[3] . $extension;
  }

  /*
   * 10 digit numbers
   * Eg. 1800 999 999
   */
  if (preg_match('/^([0-9]{4})([0-9]{3})([0-9]{3})$/', $phonenumber, $match)) {
    return $prefix . $match[1] . ' ' . $match[2] . ' ' . $match[3] . $extension;
  }

  /*
   * cell phone
   * Eg. 054 9999 999
   */
  if (preg_match('/^([0-9]{3})([0-9]{4})([0-9]{3})$/', $phonenumber, $match)) {
    return $prefix . $match[1] . ' ' . $match[2] . ' ' . $match[3] . $extension;
  }

  // default
  return $prefix . $phonenumber . $extension;
}

Functions

Namesort descending Description
format_il_phone_number Formatting for Israeli Phone Numbers. Based upon ITU-T E.123 (but let's not get too crazy)
phone_il_metadata @file CCK Field for Isreali phone numbers.
valid_il_phone_number Verification for Israel Phone Numbers.