php - strtolower - Función ucfirst() para codificaciones de caracteres multibyte
ucwords php (9)
He preguntado acerca de la función strtolower
. Pero cuando se usan caracteres extranjeros, no se convierten en mayúsculas, así que debo usar:
mb_strtolower($a,"utf8");
Pero, ¿qué puedo hacer si quiero usar la función ucfirst()
? No he encontrado ninguna función similar, donde puedo configurar el tipo de codificación.
Esta es una solución más concisa, aunque es bastante similar a la función de ucwords
:
$final_string = mb_convert_case($your_string, MB_CASE_TITLE, ''UTF-8'');
Si necesita usar mayúsculas en una cadena, es la mejor solución.
Este es el más corto que puedo averiguar ... extraer la primera palabra, aplicar MB_CASE_TITLE y reemplazarlo con el original.
function mb_ucfirst($str=''''){ $str2=explode(" ",$str); return str_replace($str2[0],mb_convert_case($str2[0], MB_CASE_TITLE, "UTF-8"),$str); }
Estoy usando cp1250 en la página web, y para Ú mb_ucfirst no funciona, tan poca actualización:
function mb_ucfirst($string)
{
$main_encoding = "cp1250";
$inner_encoding = "utf-8";
$string = iconv($main_encoding, $inner_encoding , $string );
$strlen = mb_strlen($string);
$firstChar = mb_substr($string, 0, 1, $inner_encoding);
$then = mb_substr($string, 1, $strlen - 1, $inner_encoding);
return $string = iconv($inner_encoding, $main_encoding , mb_strtoupper($firstChar, $inner_encoding) . $then );
}
No hay mb_ucfirst
función mb_ucfirst
, como ya has notado. Puedes falsificar un mb_ucfirst
con dos mb_substr
:
function mb_ucfirst($string, $encoding)
{
$strlen = mb_strlen($string, $encoding);
$firstChar = mb_substr($string, 0, 1, $encoding);
$then = mb_substr($string, 1, $strlen - 1, $encoding);
return mb_strtoupper($firstChar, $encoding) . $then;
}
Ve con este compañero:
$text = "ρασąŽUOlas ΔρασΥκελίζει niekπέΥąΥžuoρ kυνόσ";
$ucfirsted_text = mb_convert_case(mb_substr($text,0,1), MB_CASE_TITLE, "UTF-8").mb_substr($text,1);
echo $ucfirsted_text; //will print you "ΡασąŽUOlas ΔρασΥκελίζει niekπέΥąΥžuoρ kυνόσ"
Versión de trabajo (unidad probada) para PHP moderno:
<?php
function mb_ucfirst($value)
{
$firstLetter = mb_strtoupper(mb_substr($value, 0, 1, ''UTF-8''), ''UTF-8'');
$otherLetters = mb_substr($value, 1, null, ''UTF-8'');
return $firstLetter . $otherLetters;
}
echo mb_ucfirst(''żółta źółć'');
var_dump(''Żółta źółć'' === mb_ucfirst(''żółta źółć''));
/*This worked correctly for me*/
function mb_ucfirst($string, $encoding=''UTF-8'')
{
$firstChar = mb_substr($string, 0, 1, $encoding);
$then = mb_substr($string, 1, mb_strlen($string, $encoding)-1, $encoding);
return mb_strtoupper($firstChar, $encoding) . $then;
}
function mb_ucfirst($string)
{
return mb_strtoupper(mb_substr($string, 0, 1)).mb_strtolower(mb_substr($string, 1));
}
if (!function_exists(''mb_ucfirst''))
{
function mb_ucfirst($value)
{
return mb_strtoupper(mb_substr($value, 0, 1)) . mb_substr($value, 1);
}
}