Foros del Web » Programando para Internet » PHP »

Buscar una mayuscula dentro de una palabra

Estas en el tema de Buscar una mayuscula dentro de una palabra en el foro de PHP en Foros del Web. Hola a todos, estoy volviéndome loco para hacer esto: Tengo cadenas de este estilo: "El Coche es RojoThe Car is Red" Quiero seleccionar sólo la ...
  #1 (permalink)  
Antiguo 31/07/2009, 09:04
 
Fecha de Ingreso: julio-2008
Mensajes: 84
Antigüedad: 15 años, 8 meses
Puntos: 0
Buscar una mayuscula dentro de una palabra

Hola a todos, estoy volviéndome loco para hacer esto:

Tengo cadenas de este estilo: "El Coche es RojoThe Car is Red"

Quiero seleccionar sólo la parte de inglés, en este caso sería: "The Car is Red".

Se me ha ocurrido localizar el carácter en mayúscula (T) dentro de una palabra que se forma en la unión de los 2 idiomas (RojoThe) y seleccionar de esa posición hacia la derecha.

¿Como puedo localizar el carácter en mayúscula dentro de la palabra?
¿Se os ocurre una forma mejor de haberlo?

Muchas gracias
  #2 (permalink)  
Antiguo 31/07/2009, 09:13
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Buscar una mayuscula dentro de una palabra

Bueno si trabajamos con tu logica seria algo como esto

Código PHP:
Ver original
  1. $str = "El Coche es RojoThe Car is Red";
  2. echo "del The en adelante " ."<b>".substr($str,strpos($str,"The"),strlen($str))."</b><bR>";
  3. echo "del The hacia atras " ."<b>".substr($str,0,strpos($str,"The"))."</b>";
  #3 (permalink)  
Antiguo 31/07/2009, 09:24
 
Fecha de Ingreso: julio-2008
Mensajes: 84
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Buscar una mayuscula dentro de una palabra

Hola, yo soy un principiante en programación, así que si hay una lógica mejor que yo no haya visto, estaré encantado de aplicarla.



gjx2: Muchas gracias. El problema es que no todas las frases en inglés empiezan con "The".
El único punto en común es que hay una mayúscula que tiene una minúscula justo a la izquierda.
  #4 (permalink)  
Antiguo 31/07/2009, 09:35
 
Fecha de Ingreso: julio-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 16
Respuesta: Buscar una mayuscula dentro de una palabra

prueba esto...

Código PHP:
$string "El Coche es RojoThe Car is Red";
$i 0;
$maxleng strlen($string)-1;

for(
$i=0;$i $maxleng ;$i++){
    if((
$string[$i] == strtoupper($string[$i])) && ($string[$i-1] != ' ') && ($string[$i] != ' ') && $i != 0){
        
$pos_ini_ingles $i;
        break;
    }
}

$texto_espanol substr ($string $pos_ini_ingles);
$texto_ingles substr ($string $pos_ini_ingles$maxleng); 
te sirve?? quizas haya que hacer algunas modificaciones pero creo que es la idea
  #5 (permalink)  
Antiguo 31/07/2009, 11:38
 
Fecha de Ingreso: julio-2008
Mensajes: 84
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Buscar una mayuscula dentro de una palabra

Hola, esto es exactamente lo que buscaba, pero tengo un problema con las vocales acentuadas.

Me corta la frase en la mayuscula o en la vocal acentuada.
¿Hay alguna forma de solucionar esto?

Gracias
  #6 (permalink)  
Antiguo 31/07/2009, 11:46
 
Fecha de Ingreso: julio-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 16
Respuesta: Buscar una mayuscula dentro de una palabra

A ver prueba esto...

Código PHP:
function limpiar_caracteres_especiales($string ){
$string htmlentities($string);
$string preg_replace('/\&(.)[^;]*;/''\\1'$string);
return 
$string;


$string "El Coché es RojoThe Car is Red";
$i 0;
$maxleng strlen($string)-1;
$string_sce limpiar_caracteres_especiales($string);
for(
$i=0;$i $maxleng ;$i++){
    if((
$string_sce[$i] == strtoupper($string_sce[$i])) && ($string_sce[$i-1] != ' ') && ($string_sce[$i] != ' ') && $i != 0){
        
$pos_ini_ingles $i;
        break;
    }
}
$texto_espanol substr ($string $pos_ini_ingles);
$texto_ingles substr ($string $pos_ini_ingles$maxleng); 
  #7 (permalink)  
Antiguo 31/07/2009, 11:59
 
Fecha de Ingreso: julio-2008
Mensajes: 84
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Buscar una mayuscula dentro de una palabra

¡PERFECTO!

Esto arregla mi problema con las vocales acentuadas... pero tengo un último problema: los signos de puntuación.
He intentado modificarlo yo mismo, pero no he sabido como añadir la COMA

¿Se te ocurre algo?

GRACIAS
  #8 (permalink)  
Antiguo 31/07/2009, 12:11
 
Fecha de Ingreso: julio-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 16
Respuesta: Buscar una mayuscula dentro de una palabra

cambia la funcion limpiar_caracteres_especiales() de esta forma....

Código PHP:
function limpiar_caracteres_especiales($string ){
$string htmlentities($string);
$string preg_replace('/\&(.)[^;]*;/''\\1'$string);
$sacar = array('?'',''-''.'':''´'"'"'¿'"\\",'"','”','“'';'); // agrega aqui todos los signos de puntuacion que falten
$string str_replace($sacar' '$string);

return 
$string;

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:02.