Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/03/2010, 13:08
PJ100
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 0
Primera palabra en mayúscula y demás en minúsculas (con acentos)

He preparado un script para pasar la primera letra de cada palabra separada por espacios a mayúsculas y las demás a minúsculas aunque estén acentuadas pero no lo consigo:

$txt=$_POST['texto'];
$txt=trim($txt);
$array=split(' ',$txt);
$cadena='';
$count=count($array);

for($i=0;$i<$count;++$i){
$primercaracter=substr($array[$i],0,1);
$primercaracter=strtoupper($primercaracter);
$cadenarestante=substr($array[$i],1);
$cadenatotal="$primercaracter".strtolower($cadenar estante);
$cadena.=" ".$cadenatotal;
}

echo $cadena;




Después he probado a modificar el script y tampoco me funciona
No me convierte las iniciales acentuadas a mayúsculas, ni las letras que van entre medio de palabras acentuadas a minúsculas acentuadas:



$txt=$_POST['texto'];
$txt=trim($txt);
$array=split(' ',$txt);
$cadena='';
$count=count($array);

for($i=0;$i<$count;++$i){
$primercaracter=substr($array[$i],0,1);
$primercaracter=strtr(strtoupper($primercaracter), "àáâãäåæçèéêëìíîïðñòóôõöøùüú", "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ");
$cadenarestante=substr($array[$i],1);
$cadenatotal="$primercaracter".strtr(strtolower($c adenarestante), "àáâãäåæçèéêëìíîïðñòóôõöøùüú", "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ");
$cadena.=" ".$cadenatotal;
}

echo $cadena;



Si pongo --> pepito úbÉda índÍgena
se queda así --> Pepito úbÉda índÍgena

Yo lo querría asi Pepito Úbéda Índígena.

Podrían echarme una mano, os lo agradecería un montón.