![]() |
|
Snippets |
|
format a phone number with 7, 10, or 11 digits. also can convert phone number letters to numbers
lib/helpers/PhoneHelper.php
<?php function format_phone($phone = '', $convert = false, $trim = true) { // If we have not entered a phone number just return empty if (empty($phone)) { return ''; } // Strip out any extra characters that we do not need only keep letters and numbers $phone = preg_replace("/[^0-9A-Za-z]/", "", $phone); // Do we want to convert phone numbers with letters to their number equivalent? // Samples are: 1-800-TERMINIX, 1-800-FLOWERS, 1-800-Petmeds if ($convert == true) { $replace = array('2'=>array('a','b','c'), '3'=>array('d','e','f'), '4'=>array('g','h','i'), '5'=>array('j','k','l'), '6'=>array('m','n','o'), '7'=>array('p','q','r','s'), '8'=>array('t','u','v'), '9'=>array('w','x','y','z')); // Replace each letter with a number // Notice this is case insensitive with the str_ireplace instead of str_replace foreach($replace as $digit=>$letters) { $phone = str_ireplace($letters, $digit, $phone); } } // If we have a number longer than 11 digits cut the string down to only 11 // This is also only ran if we want to limit only to 11 characters if ($trim == true && strlen($phone)>11) { $phone = substr($phone, 0, 11); } // Perform phone number formatting here if (strlen($phone) == 7) { return preg_replace("/([0-9a-zA-Z]{3})([0-9a-zA-Z]{4})/", "$1-$2", $phone); } elseif (strlen($phone) == 10) { return preg_replace("/([0-9a-zA-Z]{3})([0-9a-zA-Z]{3})([0-9a-zA-Z]{4})/", "($1) $2-$3", $phone); } elseif (strlen($phone) == 11) { return preg_replace("/([0-9a-zA-Z]{1})([0-9a-zA-Z]{3})([0-9a-zA-Z]{3})([0-9a-zA-Z]{4})/", "$1($2) $3-$4", $phone); } // Return original phone if not 7, 10 or 11 digits long return $phone; }
A symfony helper for the stickman labs accordion http://www.stickmanlabs.com/accordion/
hopefully plugin oneday
<?php use_helper('Tag', 'Javascript'); function accordion($container, $options = array()){ $response = sfContext::getInstance()->getResponse(); $response->addJavascript(sfConfig::get('sf_prototype_web_dir').'/js/prototype'); $response->addJavascript(sfConfig::get('sf_prototype_web_dir').'/js/effects'); $response->addJavascript('accordion', 'last'); $options = _parse_attributes($options); $on_load = (isset($options['on_load']) && $options['on_load'] == false) ? false : true; if(isset($options['use_stylesheet']) && $options['use_stylesheet']==true) $response->addStylesheet('accordion'); $output= ''; //onLoad $output .= $on_load ? "Event.observe(window, 'load', function() {" : ''; //new accordion $output .= "var accordion_$container = new accordion ('$container', "; $accordion_options = array(); //speed if (isset($options['resize_speed'])) $accordion_options['resizeSpeed'] = $options['resize_speed']; //classes if(isset($options['toggle']) || isset($options['toggle_active']) || isset($options['content'])){ if(isset($options['toggle'])) $accordion_options['classNames']['toggle'] = "'{$options['toggle']}'"; if(isset($options['toggle_active'])) $accordion_options['classNames']['toggleActive'] = "'{$options['toggle_active']}'"; if(isset($options['content'])) $accordion_options['classNames']['content'] = "'{$options['content']}'"; $accordion_options['classNames'] = _options_for_javascript_no_sort($accordion_options['classNames']); } //size if(isset($options['height']) || isset($options['width'])){ if(isset($options['height'])) $accordion_options['defaultSize']['height'] = $options['height']; if(isset($options['width'])) $accordion_options['defaultSize']['width'] = $options['width']; $accordion_options['defaultSize'] = _options_for_javascript_no_sort($accordion_options['defaultSize']); } //direction if (isset($options['direction'])) $accordion_options['direction'] = "'{$options['direction']}'"; //event if (isset($options['on_event'])) $accordion_options['onEvent'] = "'{$options['on_event']}'"; $output .= _options_for_javascript_no_sort($accordion_options); //new accordion end $output .= ");"; if(isset($options['activate'])){ $number = $options['activate']; $output .= "accordion_$container.activate($$('#$container .{$options['toggle']}')[$number]);"; } //onLoad $output .= $on_load ? "});" : ''; return javascript_tag($output); } function _options_for_javascript_no_sort($options) { $opts = array(); foreach ($options as $key => $value) { $opts[] = "$key:$value"; } return '{'.join(', ', $opts).'}'; }