PageRenderTime 16ms CodeModel.GetById 12ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/libraries/phputf8/ucwords.php

https://gitlab.com/vitaliylukin91/idea-rating
PHP | 44 lines | 11 code | 3 blank | 30 comment | 0 complexity | 5f78ef5e8e805a7b5c2dac0391471ebf MD5 | raw file
 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