Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: spysecurityca en 3 Septiembre 2014, 05:45 am



Título: Extraer Palabra de un String con delimitadores
Publicado por: spysecurityca en 3 Septiembre 2014, 05:45 am
Si pues.

Quiero por ejemplo extraer una palabra de la siguiente frase:

"quiero tener un Perro muy valiente."

De la cual me gustaría extraer la palabra perro y que apenas detecte el primer espacio luego de terminada la palabra perro termine la busqueda y me arroje dicha palabra por separado.

Se que por ejemplo con strpos puedo darle un indicador del caracter que quiero localizar en este caso "P" pero no sé como darle un final al detectar espacio



Título: Re: Extraer Palabra de un String con delimitadores
Publicado por: MinusFour en 3 Septiembre 2014, 06:06 am
Puedes usar $offset de strpos para empezar la busqueda desde la ocurrencia de perro:

Código
  1. <?php
  2. $string = "Hola soy un perroTonto y no soy inteligente";
  3. $perroPos = strpos($string, "perro");
  4. $spacioPos = strpos($string, " ", $perroPos);
  5.  
  6. echo substr($string, $perroPos, $spacioPos-$perroPos);
  7. ?>


Título: Re: Extraer Palabra de un String con delimitadores
Publicado por: spysecurityca en 3 Septiembre 2014, 06:25 am
Vale no sabia que strpos me podía establecer un indice al encontrar el needle, muchas gracias.



Me he ideado otra forma.

Código
  1. $frase = "El Perro inteligente ideó otra forma de extraer Palabras";
  2. $palabras=explode(" ", $frase);
  3. for ($i = 0; $i < count($frase); $i++) {
  4. if ($palabras[$i][0]=="P") {
  5. echo $palabras[$i];
  6. }
  7. }

Así puedo filtrar varias palabras con un solo delimitador (en este caso "P") que es en el fondo lo que quería.


Mod: No hacer doble post. Usar etiquetas GeSHi. Normas del suboforo de PHP. (http://foro.elhacker.net/php/obligatorio_normas_del_subforo_de_php_18072014-t148495.0.html)


Título: Re: Extraer Palabra de un String con delimitadores
Publicado por: MinusFour en 3 Septiembre 2014, 07:17 am
Puedes hacer preg_match o preg_match_all igual.

Código
  1. <?php
  2.  
  3. $string = "Busca perros, perrosTontos, perrosInteligentes, perrosBonitos, perrosFeos";
  4.  
  5. preg_match_all("/\b\w*perro\w*\b/", $string, $matches);
  6.  
  7. print_r($matches);
  8.  
  9. ?>

$matches devuelve las palabras que contienen perro. De hecho, esto funciona mejor que hacer explode con espacio o buscar la primera ocurrencia del espacio.

Si te das cuenta, el string te devolvería "perros," con los otros dos metodos y no necesitas la coma.


Título: Re: Extraer Palabra de un String con delimitadores
Publicado por: WHK en 3 Septiembre 2014, 16:51 pm
Me gusta mas la forma de MinusFour, sería lo óptimo, pero también podrías hacer algo mas corto:

Código
  1. <?php
  2. $string = "quiero tener un Perro muy valiente.";
  3. $string = explode('Perro', $string)[1];