ucwords ucfirst strtolower primera pasar minuscula mb_ucwords mayusculas mayuscula cadena php uppercase lowercase

strtolower - ucfirst php



Haga la primera letra en mayúscula y el resto en minúscula en una cadena (10)

Esta es una respuesta un poco más simple y más directa a la pregunta principal. la función a continuación imita los enfoques de PHP. Solo en caso de que PHP amplíe esto con sus espacios de nombres en el futuro, primero se verifica una prueba. Estoy usando esta prueba de agua para cualquier idioma en mis instalaciones de WordPress.

$str = mb_ucfirst($str, ''UTF-8'', true);

Esto hace que la primera letra en mayúscula y el resto en minúscula como Q. Si el tercer arg se establece en falso (predeterminado), el resto de la cadena no se manipula.

// Extends PHP if (!function_exists(''mb_ucfirst'')) { function mb_ucfirst($str, $encoding = "UTF-8", $lower_str_end = false) { $first_letter = mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding); $str_end = ""; if ($lower_str_end) { $str_end = mb_strtolower(mb_substr($str, 1, mb_strlen($str, $encoding), $encoding), $encoding); } else { $str_end = mb_substr($str, 1, mb_strlen($str, $encoding), $encoding); } $str = $first_letter . $str_end; return $str; } }

/ Lundman

Todos, estoy tratando de insertar un apellido en una base de datos. Me gustaría que la primera letra se escriba en mayúscula para el nombre y si usan dos apellidos, escriba en mayúscula el primer y el segundo nombre. Entonces, por ejemplo, si alguien ingresa:

nombre de pila nombre de soltera

Convertiría esto en Marriedname Maidenname y así sucesivamente si hay más de dos nombres. El otro escenario es si alguien tiene un apóstrofo en su nombre, por lo que de todos modos hay que hacerlo si alguien ingresa:

o''connell

Esto necesitaría convertir a O''Connell. Estaba usando:

ucfirst(strtolower($last_name));

Sin embargo, como puede ver, eso no funcionaría para todos los escenarios. Gracias por cualquier consejo!


Esto capitalizará todas las primeras letras de la palabra y las letras inmediatamente después de un apóstrofo. Hará que todas las otras letras sean minúsculas. Debería funcionar para usted:

str_replace(''/' '', ''/''', ucwords(str_replace(''/''', ''/' '', strtolower($last_name))));


Ninguno de estos es compatible con UTF8, así que aquí hay uno que funciona perfectamente (hasta ahora)

function titleCase($string, $delimiters = array(" ", "-", ".", "''", "O''", "Mc"), $exceptions = array("and", "to", "of", "das", "dos", "I", "II", "III", "IV", "V", "VI")) { /* * Exceptions in lower case are words you don''t want converted * Exceptions all in upper case are any words you don''t want converted to title case * but should be converted to upper case, e.g.: * king henry viii or king henry Viii should be King Henry VIII */ $string = mb_convert_case($string, MB_CASE_TITLE, "UTF-8"); foreach ($delimiters as $dlnr => $delimiter) { $words = explode($delimiter, $string); $newwords = array(); foreach ($words as $wordnr => $word) { if (in_array(mb_strtoupper($word, "UTF-8"), $exceptions)) { // check exceptions list for any words that should be in upper case $word = mb_strtoupper($word, "UTF-8"); } elseif (in_array(mb_strtolower($word, "UTF-8"), $exceptions)) { // check exceptions list for any words that should be in upper case $word = mb_strtolower($word, "UTF-8"); } elseif (!in_array($word, $exceptions)) { // convert to uppercase (non-utf8 only) $word = ucfirst($word); } array_push($newwords, $word); } $string = join($delimiter, $newwords); }//foreach return $string; }

Uso:

$s = ''SÃO JOÃO DOS SANTOS''; $v = titleCase($s); // ''São João dos Santos''


No creo que haya una buena respuesta que cubra todos los escenarios para usted. El foro PHP.net para ucwords tiene una buena cantidad de discusiones, pero ninguna parece tener una respuesta para todos. Yo recomendaría estandarizar ya sea usar mayúsculas o dejar solo la entrada del usuario.


Primero convierta en caso de título, luego encuentre el primer apóstrofo y mayúscula el carácter PRÓXIMO. Deberá agregar muchos controles para asegurarse de que haya un carácter después del apóstrofo y este código solo funcionará en un apóstrofo. por ejemplo, "Mary O''Callahan O''connell".

$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8"); $pos = strpos($str, "''"); if ($pos != FALSE) { $str[$pos+1] = strtoupper($str[$pos+1]); }


Puede usar preg_replace con el indicador e (ejecutar una función php):

function processReplacement($one, $two) { return $one . strtoupper($two); } $name = "bob o''conner"; $name = preg_replace("/(^|[^a-zA-Z])([a-z])/e","processReplacement(''$1'', ''$2'')", $name); var_dump($name); // output "Bob O''Conner"

Quizás el patrón de expresiones regulares podría mejorarse, pero lo que he hecho es:

  • $1 es el comienzo de la línea o cualquier carácter no alfabético.
  • $2 es cualquier carácter alfabético en minúsculas

Luego reemplazamos ambos con el resultado de la función simple processReplacement() .

Si tienes PHP 5.3, probablemente valga la pena hacer que processReplacement() una función anónima.


Puede usar las funciones strtolower y ucwords en PHP.

Primero: baje todo el texto strtolower(''inputtedtext'') then capitalise all text using usando strtolower(''inputtedtext'') then capitalise all text using ucwords (''strtolower'') `.

Muestra:

$text = ''tHis iS sOme tEXt''; <br> $lower = strtolower($text); &ensp; //this will lower all letter from the text <br> $upper = ucwords($lower); &ensp; //this will uppercase all first letter from the text <br> echo $upper;

Resultado = Esto es un poco de texto

Puede usar un código de línea para esto con ucwords(strtolower($text));


Use esta función incorporada:

ucwords(''string'');


puedes probar esto por palabra

<?php echo ucwords(strtolower(''Dhaka, JAMALPUR, sarishabari'')) ?>

resultado es: Dhaka, Jamalpur, Sarishabari


usar como este ucfirst(strtolower($var));