I need a rule that will call for different formatting if a country code is used verses +1. The default would be US with the +1 XXX XXX XXXX If the +1 is false then return +XX XX XXXX XXXX. I did do a little research about phone formatting for different countries and saw that different countries format differently. I found this rule for a front page plug in. Is there something similar that I can use?
Thanks Dawn McAtee Wheeler Ideal Printers, Inc. 713-880-8800 Fax 713-880-8875 <?php /* * Smarty plugin * ------------------------------------------------------------- * Type: modifier * Name: phone_format * Purpose: Format a phone number according to the country's format * @author Philippe Jausions/11abacus.com (Philippe.Jausions-at-11abacus.com) (Lead) * @author Mark Thompson/burodefunk.com (mark-at-burodefunk.com) * @copyright (c) 2003-2006 by Philippe Jausions/11abacus.com * @date 2003-11-04 * @version 0.1.1 (2006-02-28) - MT * * Known issues: * - Phone extensions information could be handled better * (by not modifying them at all) * * Change history: * - v0.1: First release (PhJ - 2003-11-04) * - v0.1.1: Added UK support (MT - 2006-02-28) * * Supported country phone formats: * - CA: Canada (v0.1) * - FR: France (v0.1) * - AI: Anguilla (v0.1) * - AG: Antigua/Barbuda (v0.1) * - BS: Bahamas (v0.1) * - BB: Barbados (v0.1) * - BM: Bermuda (v0.1) * - CA: Canada (v0.1) * - KY: Cayman Islands (v0.1) * - DM: Dominica (v0.1) * - DO: Dominican Republic (v0.1) * - GD: Grenada (v0.1) * - GU: Guam (v0.1) * - JM: Jamaica (v0.1) * - MS: Montserrat (v0.1) * - MP: Northern Mariana Islands (v0.1) * - PR: Puerto Rico (v0.1) * - KN: Saint Kitts and Nevis (v0.1) * - LC: Saint Lucia (v0.1) * - VC: Saint Vincent and the Grenadines (v0.1) * - TT: Trinidad and Tobago (v0.1) * - TC: Turks and Caicos Islands (v0.1) * - US: United States of America (v0.1) * - VG: Virgin Islands (British) (v0.1) * - VI: Virgin Islands (U.S.) (v0.1) * - UK: United Kingdom (v0.1) * ------------------------------------------------------------- */ function smarty_modifier_phone_format($sPhone, $sCountry = 'US', $bInternationalFormat = false) { if (empty($sPhone) || !trim($sPhone)) { return $sPhone; } // Supported list of country phone format // Country code => International phone code $aCountries = array( 'CA' => '1', // Canada 'FR' => '33', // France 'AI' => '1-264', // Anguilla 'AG' => '1-268', // Antigua/Barbuda 'BS' => '1-242', // Bahamas 'BB' => '1-246', // Barbados 'BM' => '1-441', // Bermuda 'CA' => '1', // Canada 'KY' => '1-345', // Cayman Islands 'DM' => '1-767', // Dominica 'DO' => '1-809', // Dominican Republic 'GD' => '1-473', // Grenada 'GU' => '1-671', // Guam 'JM' => '1-876', // Jamaica 'MS' => '1-664', // Montserrat 'MP' => '1-670', // Northern Mariana Islands 'PR' => array('1-787', '1-939'), // Puerto Rico 'KN' => '1-869', // Saint Kitts and Nevis 'LC' => '1-758', // Saint Lucia 'VC' => '1-784', // Saint Vincent and the Grenadines 'TT' => '1-868', // Trinidad and Tobago 'TC' => '1-649', // Turks and Caicos Islands 'US' => '1', // United States of America 'VG' => '1-284', // Virgin Islands (British) 'VI' => '1-340', // Virgin Islands (U.S.) 'UK' => '44' // United Kingdom ); if (!isset($aCountries[$sCountry])) { return $sPhone; } // Get rid of parenthesis, dashes, plus and dot signs, // then remove any spaces before numbers, // and remove duplicate "white spaces". $sFormatted = str_replace(array('+', '(', ')', '-', '.', '/'), '', trim($sPhone)); $sFormatted = preg_replace(array('/\s+([0-9])/', '/\s+/'), array('\1', ' '), $sFormatted); list($sFormatted, $sExt) = explode(' ', $sFormatted, 2); $iLen = strlen($sFormatted); $iCountryCode = $aCountries[$sCountry]; // Deal with the primary phone number part based on the country switch ($sCountry) { /* case 'CA': See 'US' */ case 'FR': // International format: +33 (0)1 23 45 67 89 // National format: (0)1 23 45 67 89 // Toll number format: 0800 12 34 56 // 08 36 12 34 56 switch ($iLen) { case 10: // Numeros Vert, Azur & Indigo $aNumerosSpeciaux = array('0800', '0801', '0802', '0803'); $sIndicatif = substr($sFormatted, 0, 4); if (in_array($sIndicatif, $aNumerosSpeciaux)) { // Appels internationaux impossible (?) $bInternationalFormat = false; $sFormatted = $sIndicatif . ' ' . substr($sFormatted, 4, 2) . ' ' . substr($sFormatted, 6, 2) . ' ' . substr($sFormatted, -2); } elseif ($sIndicatif == '0836' && !$bInternationalFormat) { // Numeros Kiosque sont traites normalement a // l'international, mais en France the zero n'est pas mis // entre parentheses $sFormatted = substr($sFormatted, 0, 2) . ' ' . substr($sFormatted, 2, 2) . ' ' . substr($sFormatted, 4, 2) . ' ' . substr($sFormatted, 6, 2) . ' ' . substr($sFormatted, -2); } else { $sFormatted = '(' . substr($sFormatted, 0, 1) . ')' . substr($sFormatted, 1, 1) . ' ' . substr($sFormatted, 2, 2) . ' ' . substr($sFormatted, 4, 2) . ' ' . substr($sFormatted, 6, 2) . ' ' . substr($sFormatted, -2); } break; case 9: $sFormatted = '(0)' . substr($sFormatted, 0, 1) . ' ' . substr($sFormatted, 1, 2) . ' ' . substr($sFormatted, 3, 2) . ' ' . substr($sFormatted, 5, 2) . ' ' . substr($sFormatted, -2); default: // Any other unrecognized phone numbers are return as // they were passed. return $sPhone; } break; // End [CASE] FR / France // The following countries are folded into the US numbering plan case 'AI': // Anguilla case 'AG': // Antigua/Barbuda case 'BS': // Bahamas case 'BB': // Barbados case 'BM': // Bermuda case 'CA': // Canada case 'KY': // Cayman Islands case 'DM': // Dominica case 'DO': // Dominican Republic case 'GD': // Grenada case 'GU': // Guam case 'JM': // Jamaica case 'MS': // Montserrat case 'MP': // Northern Mariana Islands case 'PR': // Puerto Rico case 'KN': // Saint Kitts and Nevis case 'LC': // Saint Lucia case 'VC': // Saint Vincent and the Grenadines case 'TT': // Trinidad and Tobago case 'TC': // Turks and Caicos Islands case 'VG': // Virgin Islands (British) case 'VI': // Virgin Islands (U.S.) case 'US': // United States of America // National format: (123) 456-7890 // International format: +1 (1) 123-456-7890 // Toll number format: 1-800-123-4567 if ($iLen == 11) { $sFormatted = substr($sFormatted, 1); $iLen = 10; } switch ($iLen) { case 7: // Local number // Note: International number format cannot //be used for US and Canada $sFormatted = substr($sFormatted, 0, 3) . '-' . substr($sFormatted, -4); $bInternationalFormat &= ($sCountry != 'US' && $sCountry != 'CA'); break; case 10: // Full number // Toll phone area codes $aTollAreaCodes = array(800, 866, 877, 888, 855, 844, 833, 822, 900, 880, 881, 882, 883); $sAreaCode = substr($sFormatted, 0, 3); // Countries using the US phone numbering system // use the code area as country code, so we "reset" // the country code to "1" for phone numbers already including // the area code. $iCountryCode = '1'; if (in_array((int) $sAreaCode, $aTollAreaCodes)) { // Note: International format cannot be supported here // for toll numbers. $sFormatted = '1-' . $sAreaCode . '-' . substr($sFormatted, 3, 3) . '-' . substr($sFormatted, -4); $bInternationalFormat = false; } elseif ($bInternationalFormat) { $sFormatted = '(1) ' . $sAreaCode . '-' . substr($sFormatted, 3, 3) . '-' . substr($sFormatted, -4); } else { $sFormatted = '(' . $sAreaCode . ') ' . substr($sFormatted, 3, 3) . '-' . substr($sFormatted, -4); } break; default: // Any other unrecognized phone numbers are return as // they were passed. return $sPhone; } // End [SWITCH] on length of number break; // End [CASE] US & Canada (CA) case 'UK': // United Kingdom // National format: (020) 1234 5678 // International format: +44 (20) 1234-5678 // Toll number format: 0800-123-456 $iLen = strlen($sPhone); switch ($iLen) { case 8: // Local number // Note: International number format cannot // be used for UK $sFormatted = substr($sFormatted, 0, 3) . ' ' . substr($sFormatted, -4); $bInternationalFormat &= $sCountry != 'UK'; break; case (10 || 11): // Full number // Toll phone area codes $aTollAreaCodes = array(800, 844, 845, 870, 871, 90, 91); if (in_array((int) substr($sFormatted, 1, 3), $aTollAreaCodes)) { // Note: International format cannot be supported here // for toll numbers. $sFormatted = substr($sFormatted, 0, 4) . '-' . substr($sFormatted, 4, 3) . '-' . substr($sFormatted, 7); $bInternationalFormat = false; } elseif ($bInternationalFormat) { $sFormatted = '(' . substr($sFormatted, 1, 2) . ') '. substr($sFormatted, 3, 4) . '-' . substr($sFormatted, 7); } else { $sFormatted = substr($sFormatted, 0, 3) . ' ' . substr($sFormatted, 3, 4) . ' ' . substr($sFormatted, 7); } break; default: // Any other unrecognized phone numbers are return as // they were passed. return $sPhone; } // End [SWITCH] on length of number break; // End [CASE] UK } // End [SWITCH] on country code // Prepend with the country code and append extension if needed. return (($bInternationalFormat) ? '+' . $iCountryCode . ' ' : '') . $sFormatted . (($sExt) ? ' ' . $sExt : ''); } ?> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Calling all FP Web Users! Do you have a question or lots of knowledge to share about FusionPro Web? If so, join our Printable Web to Print Users' Forum today! Send email to [EMAIL PROTECTED] to find out how! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -- Users of FusionPro Desktop have unlimited free email support. Contact Printable Support at [EMAIL PROTECTED] -- View FusionPro Knowledge Base, FusionPro Samples at www.printable.com/vdp/desktop.htm -- You are currently subscribed to fusionpro as: [EMAIL PROTECTED] To unsubscribe send a blank email to [EMAIL PROTECTED] -- -- Note: All e-mail sent to or from this address will be received or otherwise recorded by the e-mail recipients of this forum. It is subject to archival, monitoring or review by, and/or disclosure to someone other than the recipient. Our privacy policy is posted on www.printplanet.com --