Foros del Web » Programando para Internet » PHP »

Cortar cadena hasta cierto caracter

Estas en el tema de Cortar cadena hasta cierto caracter en el foro de PHP en Foros del Web. Hola. Necesito cortar una cadena hasta que se encuentre un caracter diferente a alguno del abecedario (case insensitive). Ejemplo: Hola Paola -> Hola Buscando-en los ...
  #1 (permalink)  
Antiguo 09/02/2012, 18:44
 
Fecha de Ingreso: octubre-2006
Mensajes: 562
Antigüedad: 17 años, 6 meses
Puntos: 12
Cortar cadena hasta cierto caracter

Hola.
Necesito cortar una cadena hasta que se encuentre un caracter diferente a alguno del abecedario (case insensitive).

Ejemplo:

Hola Paola -> Hola
Buscando-en los foros -> Buscando
Mañana, iremos mañana -> Mañana

Supongo que se puede hacer con preg_split() pero no conozco la expresión regular. O quizá haya algo más eficiente.

Gracias.
  #2 (permalink)  
Antiguo 09/02/2012, 18:53
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Cortar cadena hasta cierto caracter

Algo básico podría ser:

Código PHP:
Ver original
  1. <?php
  2. $r = preg_split('/[^\wñ]/i', 'Hola Paola');
  3. echo $r[0];

Para aprender y mejorar esto visita este aporte:

http://www.forosdelweb.com/f18/aport...s-pcre-646110/

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 09/02/2012, 18:59
Avatar de zarkiel  
Fecha de Ingreso: febrero-2012
Mensajes: 51
Antigüedad: 12 años, 2 meses
Puntos: 15
Respuesta: Cortar cadena hasta cierto caracter

Quizá esto te sirva:

Código PHP:
Ver original
  1. <?
  2. $str = 'Hola Paola';
  3.  
  4. if(preg_match('/^([A-Z|a-z|ñ|Ñ]+)/',$str,$r)){
  5.     echo $r[1];
  6. }
  7. ?>
__________________
« Los deseos pueden hacerse realidad, pero no basta con esperar un milagro, el milagro lo hacemos nosotros... Aquí y ahora »
  #4 (permalink)  
Antiguo 09/02/2012, 19:04
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Cortar cadena hasta cierto caracter

Cita:
Iniciado por zarkiel Ver Mensaje
Quizá esto te sirva:

Código PHP:
Ver original
  1. <?
  2. $str = 'Hola Paola';
  3.  
  4. if(preg_match('/^([A-Z|a-z|ñ|Ñ]+)/',$str,$r)){
  5.     echo $r[1];
  6. }
  7. ?>
Así también funciona pero no hace falta escribir todo eso, bastaría con:

Código PHP:
Ver original
  1. <?php
  2. $r = preg_match('/^[a-zñ]+/i', 'Hola Paola', $m);
  3. echo $m[0];

Pd: No uses tags cortos, es mejor <?php ?>

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 09/02/2012, 19:16
 
Fecha de Ingreso: octubre-2006
Mensajes: 562
Antigüedad: 17 años, 6 meses
Puntos: 12
Respuesta: Cortar cadena hasta cierto caracter

Muchas gracias a los 2. Sí funciona.

Código PHP:
Ver original
  1. $r = preg_match('/^[a-zñ]+/i', 'Hola Paola', $m);
  2. echo $m[0];

Ahora si quiero incluir las tildes sería así?

/^[a-záéíóúüñ]+/i
  #6 (permalink)  
Antiguo 09/02/2012, 19:21
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Cortar cadena hasta cierto caracter

Porque no lo pruebas?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 09/02/2012, 19:22
 
Fecha de Ingreso: octubre-2006
Mensajes: 562
Antigüedad: 17 años, 6 meses
Puntos: 12
Respuesta: Cortar cadena hasta cierto caracter

En realidad quería que lo corrijas porque no funciona XD
  #8 (permalink)  
Antiguo 09/02/2012, 19:32
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Cortar cadena hasta cierto caracter

¿Qué no te funciona? A mi esto me funciona bien:

Código PHP:
Ver original
  1. <?php
  2. $r = preg_match('/^[a-zñáéíóúü]+/i', 'Andrés Esto funciona', $m);
  3. echo $m[0]; //Andrés
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #9 (permalink)  
Antiguo 09/02/2012, 19:42
 
Fecha de Ingreso: octubre-2006
Mensajes: 562
Antigüedad: 17 años, 6 meses
Puntos: 12
Respuesta: Cortar cadena hasta cierto caracter

Que raro, probé con

/^[A-Za-zÑñáéíóúÁÉÍÓÚ]+/

y tampoco funciona y es correcta.
  #10 (permalink)  
Antiguo 09/02/2012, 19:43
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Cortar cadena hasta cierto caracter

Pues quien sabe como lo estás probando porque ambos me dan el mismo resultado. Muestra que estas haciendo o que error te da.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #11 (permalink)  
Antiguo 09/02/2012, 19:59
 
Fecha de Ingreso: octubre-2006
Mensajes: 562
Antigüedad: 17 años, 6 meses
Puntos: 12
Respuesta: Cortar cadena hasta cierto caracter

Era problema de codificación.
Así funcionó.
Código PHP:
Ver original
  1. $preg = preg_match('/^[A-Za-zÑñáéíóúÁÉÍÓÚ]+/', utf8_decode($string), $matches);

Gracias!

Última edición por jalex16; 09/02/2012 a las 20:08
  #12 (permalink)  
Antiguo 15/02/2012, 20:38
 
Fecha de Ingreso: octubre-2006
Mensajes: 562
Antigüedad: 17 años, 6 meses
Puntos: 12
Respuesta: Cortar cadena hasta cierto caracter

Ahora tengo otra duda.
Tengo la cadena compuesta por horas
Código PHP:
Ver original
  1. $string = "12:00 9:15, 10:32  08:11,23:22";

Necesito obtener
12:00
9:15
10:32
08:11
23:22

Leyendo el link que me pusiste logré hacer esto
Código PHP:
Ver original
  1. $preg = preg_match_all('/(?<=\d):(?=\d)/', $string, $matches);
Y sí busca como debe (en parte), pero quisiera que me incluya los números al mostrarlos, alguna idea?

Intenté también con
Código PHP:
Ver original
  1. $preg = preg_match_all('/(?<=\d{1,2}):(?=\d{1,2})/', $string, $matches);
Eso debería coincidir con ":" entre 1 o 2 dígitos, pero me da un error de compilación con el "mirar atrás", parece que no puede tener longitud fija.

Código HTML:
Ver original
  1. Warning:  preg_match_all() [function.preg-match-all]: Compilation failed: lookbehind assertion is not fixed length at offset 11
  #13 (permalink)  
Antiguo 15/02/2012, 20:53
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Cortar cadena hasta cierto caracter

Esto debería funcionar:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $string = "12:00 9:15, 10:32  08:11,23:22";
  4.  
  5. preg_match_all('#\d{1,2}:\d{1,2}#', $string, $m);
  6.  
  7. echo '<pre>';
  8. print_r($m);
  9. echo '</pre>';

Cita:
Array
(
[0] => Array
(
[0] => 12:00
[1] => 9:15
[2] => 10:32
[3] => 08:11
[4] => 23:22
)

)
Si lo quieres mejorar puedes hacer:

Código PHP:
Ver original
  1. (?<![0-9])\d{1,2}:\d{1,2}(?![0-9])

Ya habría que ver si funciona en todos los casos.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 15/02/2012 a las 21:13
  #14 (permalink)  
Antiguo 16/02/2012, 13:32
 
Fecha de Ingreso: octubre-2006
Mensajes: 562
Antigüedad: 17 años, 6 meses
Puntos: 12
Respuesta: Cortar cadena hasta cierto caracter

Cita:
Iniciado por andresdzphp Ver Mensaje
Esto debería funcionar:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $string = "12:00 9:15, 10:32  08:11,23:22";
  4.  
  5. preg_match_all('#\d{1,2}:\d{1,2}#', $string, $m);
  6.  
  7. echo '<pre>';
  8. print_r($m);
  9. echo '</pre>';
Esa funcionó perfectamente, aunque no encuentro info del #.
Muchas gracias!

De la otra aún no logro descifrar cómo trabaja jeje.
  #15 (permalink)  
Antiguo 16/02/2012, 14:06
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Cortar cadena hasta cierto caracter

Cita:
Iniciado por jalex16 Ver Mensaje
Esa funcionó perfectamente, aunque no encuentro info del #.
Muchas gracias!

De la otra aún no logro descifrar cómo trabaja jeje.
La otra expresión lo que hace es ignorar las fechas si tienen números de más a los lados. Los # son simplemente delimitadores, puedes usar varios como # @ / + % etc...

http://php.net/manual/es/regexp.refe...delimiters.php

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: pcre, preg_split, regex, replace
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 10:12.