/libraries/phputf8/ucwords.php
PHP | 44 lines | 11 code | 3 blank | 30 comment | 0 complexity | 5f78ef5e8e805a7b5c2dac0391471ebf MD5 | raw file
Possible License(s): LGPL-2.1
1<?php 2/** 3* @version $Id$ 4* @package utf8 5* @subpackage strings 6*/ 7 8//--------------------------------------------------------------- 9/** 10* UTF-8 aware alternative to ucwords 11* Uppercase the first character of each word in a string 12* Note: requires utf8_substr_replace and utf8_strtoupper 13* @param string 14* @return string with first char of each word uppercase 15* @see http://www.php.net/ucwords 16* @package utf8 17* @subpackage strings 18*/ 19function utf8_ucwords($str) { 20 // Note: [\x0c\x09\x0b\x0a\x0d\x20] matches; 21 // form feeds, horizontal tabs, vertical tabs, linefeeds and carriage returns 22 // This corresponds to the definition of a "word" defined at http://www.php.net/ucwords 23 $pattern = '/(^|([\x0c\x09\x0b\x0a\x0d\x20]+))([^\x0c\x09\x0b\x0a\x0d\x20]{1})[^\x0c\x09\x0b\x0a\x0d\x20]*/u'; 24 return preg_replace_callback($pattern, 'utf8_ucwords_callback',$str); 25} 26 27//--------------------------------------------------------------- 28/** 29* Callback function for preg_replace_callback call in utf8_ucwords 30* You don't need to call this yourself 31* @param array of matches corresponding to a single word 32* @return string with first char of the word in uppercase 33* @see utf8_ucwords 34* @see utf8_strtoupper 35* @package utf8 36* @subpackage strings 37*/ 38function utf8_ucwords_callback($matches) { 39 $leadingws = $matches[2]; 40 $ucfirst = utf8_strtoupper($matches[3]); 41 $ucword = utf8_substr_replace(ltrim($matches[0]),$ucfirst,0,1); 42 return $leadingws . $ucword; 43} 44