37 lines
984 B
PHP
37 lines
984 B
PHP
|
<?php
|
||
|
/**
|
||
|
* Smarty plugin
|
||
|
*
|
||
|
* @package Smarty
|
||
|
* @subpackage PluginsModifier
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Smarty capitalize modifier plugin
|
||
|
*
|
||
|
* Type: modifier<br>
|
||
|
* Name: capitalize<br>
|
||
|
* Purpose: capitalize words in the string
|
||
|
*
|
||
|
* @link
|
||
|
* @author Monte Ohrt <monte at ohrt dot com>
|
||
|
* @param string $
|
||
|
* @return string
|
||
|
*/
|
||
|
function smarty_modifier_capitalize($string, $uc_digits = false)
|
||
|
{
|
||
|
// uppercase with php function ucwords
|
||
|
$upper_string = ucwords($string);
|
||
|
// check for any missed hyphenated words
|
||
|
$upper_string = preg_replace("!(^|[^\p{L}'])([\p{Ll}])!ue", "'\\1'.ucfirst('\\2')", $upper_string);
|
||
|
// check uc_digits case
|
||
|
if (!$uc_digits) {
|
||
|
if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!u", $string, $matches, PREG_OFFSET_CAPTURE)) {
|
||
|
foreach($matches[1] as $match)
|
||
|
$upper_string = substr_replace($upper_string, $match[0], $match[1], strlen($match[0]));
|
||
|
}
|
||
|
}
|
||
|
return $upper_string;
|
||
|
}
|
||
|
|
||
|
?>
|