Re: [SMARTY] UTF-8 and capitalize issues
| From: | Cameron Perry | Date: | Sat, 11 Mar 2006 00:45:59 +0000 |
| Subject: | Re: [SMARTY] UTF-8 and capitalize issues | ||
| Groups: | php.smarty.general | ||
| Request: | Send a blank email to php-smarty-general+get-13352@lists.php.net to get a copy of this message | ||
Thanks for the tip Messju, though it doesn't seem to be working properly for me... the letter immediately following the accented character is capitalized using the functions below...
I also tried a few different methods, but it seems there's *something* wrong here. If I try the mb_convert_case() function to convert to all upper-case: mb_convert_case($string[0],MB_CASE_UPPER,"UTF-8"); all the characters except the accented ones are converted to upper-case. Galápagos -> GALáPAGOS. I also tried the mb_convert_encoding to UTF-8, but to no avail.
Does it maybe have something to do with the way I'm entering the characters? On my Mac I type option-e then the vowel (eg, á), but I really doubt that's the problem. (Also recall that my db tables are all utf8_general_ci)
Thanks a million!
Cameron
On Mar 9, 2006, at 10:37 AM, messju mohr wrote:
On Thu, Mar 09, 2006 at 09:22:45AM -0800, Cameron Perry wrote:Hi everyone, I'm applying the capitalize modifier to a particular text variable, which works as expected in most cases. What has recently come up is that non-english characters are throwing a bit of a kink into my plan. For example, Galápagos is coming out as GaláPagos with the capitalize modifier. I looked through the forums and didn't find any solutions that worked, including using the setlocale() PHP function on my page... All my Smarty template pages are set to charset=utf-8 in the headers, and my mysql tables and text fields are utf8_general_ci. So at this point I'm at a bit of a loss as to what I should do next. Any ideas?write and use your own utf-8 aware modifier, like this one: <?php function smarty_modifier_mb_capitalize($string, $uc_digits = false) {return preg_replace_callback('!\b\w+\b!u', 'smarty_modifier_mb_capitalize_ucfirst', $string);} function smarty_modifier_mb_capitalize_ucfirst($string) {return mb_strtoupper(mb_substr($string[0], 0, 1)) . mb_substr($string[0], 1);} ?>Thanks! Cameron --Smarty General Mailing List (http://smarty.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php