| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | 
							- <?php
 
- /**
 
-  * @file
 
-  * CCK Field for Philippine phone numbers.
 
-  */
 
-  function phone_ph_metadata() {
 
-    // These strings are translated using t() on output.
 
-    return array(
 
-      'error' => '"%value" is not a valid Philippine phone number<br />Example of valid Philippine phone numbers: +63 (2) 123-4567 or +63 (2) 123-4567 loc. 123	or mobile +63 (919) 123-4567',
 
-    );
 
-  }
 
- /**
 
-  * Verifies that $phonenumber is a valid ten-digit Philippine phone number
 
-  *
 
-  * @param string $phonenumber
 
-  * @return boolean Returns boolean FALSE if the phone number is not valid.
 
-  */
 
- function valid_ph_phone_number($phonenumber) {
 
-   /*
 
-     Accepts:
 
-         +63197071234567
 
- 				+63197071234567
 
-         +63(19707) 1234567
 
- 				+63(19707) 123-4567
 
-         +63 19707 123 4567
 
-         +63 19707 123-4567
 
-         (19707) 1234567 loc. 1234
 
-   */
 
-   $regex = "/
 
-     (
 
-         (^\+63\s?\(?\d{5}\)?|^\(?\d{5}\)?){1}\s?\d{3}(\S?|\s?)?\d{4}  # 5 digit area code with optional +63 internationalisation or not, optional spaces and brackets.
 
-         |
 
-         (^\+63\s?\(?\d{4}\)?|^\(?\d{4}\)?){1}\s?\d{3}(\S?|\s?)?\d{4}  # 4 digit area code with optional +63 internationalisation or not, optional spaces and brackets.
 
-         |
 
-         (^\+63\s?\(?\d{3}\)?|^\(?\d{3}\)?){1}\s?\d{3}(\S?|\s?)?\d{4}  # 3 digit area code with optional +63 internationalisation or not, optional spaces and brackets.
 
-         |
 
-         (^\+63\s?\(?\d{2}\)?|^\(?\d{2}\)?){1}\s?\d{3}(\S?|\s?)?\d{4}  # 2 digit area code with optional +63 internationalisation or not, optional spaces and brackets.
 
-         |
 
-         (^\+63\s?\(?\d{1}\)?|^\(?\d{1}\)?){1}\s?\d{3}(\S?|\s?)?\d{4}  # 1 digit area code with optional +63 internationalisation or not, optional spaces and brackets.
 
-     )
 
-     (\s?\#\d*)?   # optional extension number shown with a loc. divider
 
-   /x";
 
-   // return true if valid, false otherwise
 
-   if (!preg_match($regex, $phonenumber)) {
 
-   	return FALSE;
 
-   }
 
-   else
 
-   {
 
- 		return TRUE;
 
-   }
 
- }
 
- /**
 
-  * Convert a valid Philippine phone number into standard +63 (2) 123-4567 or	+63 (2) 123-4567 loc. 123	or mobile +63 (919) 123-4567
 
-  *
 
-  * @param $phonenumber must be a valid ten-digit number (with optional extension)
 
-  *
 
-  */
 
- function format_ph_phone_number($phonenumber, $field = FALSE) {
 
-     $area = $number = $extension = $description = '';
 
-         //Simplify to 10 digit number and clean up ready for international reformat.
 
-         $phonenumber = preg_replace("/^\+63/","",$phonenumber);
 
-         $phonenumber = preg_replace("/\(/","",$phonenumber);
 
-         $phonenumber = preg_replace("/\)/","",$phonenumber);
 
-         //If there are some spaces in the number assume some level of preformatting
 
-             $regex = "/
 
-                 # 5 digit area code.
 
-                 (
 
-                     (\d{5}) # capture 5 digit area code
 
-                     (\s*)?     # ignore required separator to make a distinction with other area codes
 
-                     (\d{3}) # capture first set of numbers in the local number
 
-                     (\S?|\s*)?     # ignore optional separator
 
-                     (\d{4}) # capture second set of numbers in the local number
 
-                 |
 
-                 # 4 digit area code.
 
-                     (\d{4}) # capture 4 digit area code
 
-                     (\s*)?    # ignore required seperator
 
-                     (\d{3}) # capture first set of numbers in the local number
 
-                     (\S?|\s*)?     # ignore possible boundary
 
-                     (\d{4}) # capture second set of numbers in the local number
 
-                 |
 
-                 # 3 digit area code.
 
-                     (\d{3}) # capture 3 digit area code
 
-                     (\s*)?     # ignore required seperator
 
-                     (\d{3}) # capture first set of numbers in the local number
 
-                     (\S?|\s*)?     # ignore possible boundary
 
-                     (\d{4}) # capture second set of numbers in the local number
 
-                 |
 
-                 # 2 digit area code.
 
-                     (\d{2}) # capture 2 digit area code
 
-                     (\s*)?     # ignore required seperator
 
-                     (\d{3}) # capture first set of numbers in the local number
 
-                     (\S?|\s*)?     # ignore possible boundary
 
-                     (\d{4}) # capture second set of numbers in the local number
 
-                 |
 
-                 # 1 digit area code.
 
-                     (\d{1}) # capture 1 digit area code
 
-                     (\s*)?     # ignore required boundary to make a distinction with other area codes
 
-                     (\d{3}) # capture first set of numbers in the local number
 
-                     (\S?|\s*)?     # ignore possible boundary
 
-                     (\d{4}) # capture second set of numbers in the local number
 
-                 )
 
-                 # capture the optional extension number
 
-                 (\s*loc\.\s*|\s*ext\.\s*)?
 
-                 (\d*)?
 
- 								([a-zA-Z0-9\-\. \/\,\']{0,})?
 
-             /x";
 
-             preg_match($regex, $phonenumber, $matches);
 
-             $area = $matches[2] . $matches[7] . $matches[12] . $matches[17] . $matches[22];
 
-             $number = $matches[4] . $matches[9] . $matches[14] . $matches[19] . $matches[24] . '-' . $matches[6] . $matches[11] . $matches[16] . $matches[21] . $matches[26];
 
-             $extension = $matches[28];
 
- 						$description = $matches[29];
 
-       $phonenumber = '+63 (' . $area . ') ' . $number;
 
-       $phonenumber .= (empty($extension)) ? '' : " loc. $extension";
 
- 			$phonenumber .= (empty($description))? '' : " $description";
 
-   return $phonenumber;
 
- }
 
 
  |