Extraer Palabra de un String con delimitadores

Iniciado por spysecurityca, 3 Septiembre 2014, 05:45 AM

0 Miembros y 2 Visitantes están viendo este tema.

spysecurityca

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


MinusFour

Puedes usar $offset de strpos para empezar la busqueda desde la ocurrencia de perro:

Código (php) [Seleccionar]
<?php
$string 
"Hola soy un perroTonto y no soy inteligente";
$perroPos strpos($string"perro");
$spacioPos strpos($string" "$perroPos);

echo 
substr($string$perroPos$spacioPos-$perroPos);
?>


spysecurityca

#2
Vale no sabia que strpos me podía establecer un indice al encontrar el needle, muchas gracias.




Me he ideado otra forma.

Código (php) [Seleccionar]
$frase = "El Perro inteligente ideó otra forma de extraer Palabras";
$palabras=explode(" ", $frase);
for ($i = 0; $i < count($frase); $i++) {
if ($palabras[$i][0]=="P") {
echo $palabras[$i];
}
}


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.

MinusFour

#3
Puedes hacer preg_match o preg_match_all igual.

Código (php) [Seleccionar]

<?php

$string 
"Busca perros, perrosTontos, perrosInteligentes, perrosBonitos, perrosFeos";

preg_match_all("/\b\w*perro\w*\b/"$string$matches);

print_r($matches);

?>


$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.

WHK

Me gusta mas la forma de MinusFour, sería lo óptimo, pero también podrías hacer algo mas corto:

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