source: trunk/web/punbb/include/utf8/ucwords.php @ 7

Last change on this file since 7 was 6, checked in by dj3c1t, 13 years ago

mise a jour du trunk

File size: 1.3 KB
Line 
1<?php
2
3/**
4* @version $Id: ucwords.php,v 1.1 2006/02/25 13:50:17 harryf Exp $
5* @package utf8
6* @subpackage strings
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{
21        // Note: [\x0c\x09\x0b\x0a\x0d\x20] matches;
22        // Form feeds, horizontal tabs, vertical tabs, linefeeds and carriage returns
23        // This corresponds to the definition of a "word" defined at http://www.php.net/ucwords
24        $pattern = '/(^|([\x0c\x09\x0b\x0a\x0d\x20]+))([^\x0c\x09\x0b\x0a\x0d\x20]{1})[^\x0c\x09\x0b\x0a\x0d\x20]*/u';
25
26        return preg_replace_callback($pattern, 'utf8_ucwords_callback', $str);
27}
28
29/**
30* Callback function for preg_replace_callback call in utf8_ucwords
31* You don't need to call this yourself
32* @param array of matches corresponding to a single word
33* @return string with first char of the word in uppercase
34* @see utf8_ucwords
35* @see utf8_strtoupper
36* @package utf8
37* @subpackage strings
38*/
39function utf8_ucwords_callback($matches)
40{
41        $leadingws = $matches[2];
42        $ucfirst = utf8_strtoupper($matches[3]);
43        $ucword = utf8_substr_replace(ltrim($matches[0]), $ucfirst, 0, 1);
44
45        return $leadingws.$ucword;
46}
Note: See TracBrowser for help on using the repository browser.