tags generated from * the passed parameters * ------------------------------------------------------------- */ function smarty_function_html_options($params, &$smarty) { extract($params); $html_result = ''; settype($selected, 'array'); if (isset($options)) { settype($options, 'array'); foreach ($options as $key => $value) { $html_result .= smarty_function_html_options_optoutput($key, $value, $selected); } } else { settype($output, 'array'); settype($values, 'array'); for ($i = 0, $for_max = count($output); $i < $for_max; $i++) { if ($i < count($values)) { $html_result .= smarty_function_html_options_optoutput($values[$i], $output[$i], $selected); } else { $html_result .= smarty_function_html_options_optoutput($output[$i], $output[$i], $selected); } } } return $html_result; } function smarty_function_html_options_optoutput($key, $value, $selected) { if(!is_array($value)) { $html_result = '' . "\n"; foreach ($values as $key => $value) { $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected); } $optgroup_html .= "\n"; return $optgroup_html; } function smarty_function_html_options_htmlspecialchars($text) { // do not escape already escaped entities (& {) $text = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $text); $text = htmlspecialchars($text); $text = str_replace(array('%%%SMARTY_START%%%','%%%SMARTY_END%%%'), array('&',';'), $text); return $text; } /* vim: set expandtab: */ ?>