Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Extraer texto de una oracion dada una palabra a buscar

Estas en el tema de Extraer texto de una oracion dada una palabra a buscar en el foro de PHP en Foros del Web. Buenas tardes amigos foristas saludos Cordiales, Tengo un problema y queria compartir con uds si es factible o no reolver. Necesito hacer una funcion php ...
  #1 (permalink)  
Antiguo 26/09/2016, 12:15
 
Fecha de Ingreso: junio-2008
Mensajes: 74
Antigüedad: 15 años, 10 meses
Puntos: 2
Extraer texto de una oracion dada una palabra a buscar

Buenas tardes amigos foristas saludos Cordiales,

Tengo un problema y queria compartir con uds si es factible o no reolver. Necesito hacer una funcion php que me extraiga un texto de una oracion pero dada una palabra clave a buscar y esta debe recortar hacia atras y hacia adelante.

Ejemplo oracion:

In a metus vel nulla tincidunt bibendum. Ut lorem ipsum, maximus at mattis sit amet, maximus non nunc. Fusce mattis enim est, et iaculis nibh convallis vel. Quisque cursus, purus non elementum tincidunt, dui nulla vulputate mi, ac tincidunt magna purus eu magna. Nullam euismod nibh et neque lobortis,

Palabra a buscar: lorem

Resultado: ... nulla tincidunt bibendum. Ut lorem ipsum, maximus at mattis sit amet ...

La fucnion deberia pasar las cantidad de palabras a extraer. lo he hecho extrayendo hacia delante pero hacia atras no he podido.

Muchas Gracias....
  #2 (permalink)  
Antiguo 26/09/2016, 18:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Extraer texto de una oracion dada una palabra a buscar

Podrías construir un array de palabras, entonces buscar en cada elemento si coincide tu búsqueda.

Una vez conozcas los índices de los elementos que coinciden será más fácil hacer slice, o cortar el array a tu antojo.

Si usas puras funciones de cadenas de texto o expresiones regulares es mucho más complejo.

Tu dirás.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/09/2016, 22:34
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 9 años, 5 meses
Puntos: 91
Respuesta: Extraer texto de una oracion dada una palabra a buscar

por que no pruebas con strpos que te dice la posicion de la palabra que quieres buscar y con substr la acortas? o algo asi por el estilo puedes buscar ;)
  #4 (permalink)  
Antiguo 27/09/2016, 08:59
 
Fecha de Ingreso: junio-2008
Mensajes: 74
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Extraer texto de una oracion dada una palabra a buscar

Gracias por responder, bueno es lo que mas omenos hice pero me falta cortar hacia atras .

function getSubContent($string, $length=NULL)
{

if ($length == NULL)
$length = 50;

$stringDisplay = substr(strip_tags($string),10,$length);

if (strlen(strip_tags($string)) > $length)
$stringDisplay .= '...';
return $stringDisplay;
}


me falta escortar hacia atras
  #5 (permalink)  
Antiguo 27/09/2016, 12:11
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Extraer texto de una oracion dada una palabra a buscar

Lo primero es ue no te explicas bien, o por lo menos yo no terminó de entenderte.

Quieres cortar una cadena por una palabra dada, tantas veces como aparezca?
Ó
Quieres reemplazar la palabra tantas veces como aparezca?

Por qué en el ejemplo quedas me da la impresión que quieres reemplazar la palabra dada por otra cosas, si es así puedes utilizar preg_replace

Ejemplo del manual:

Código PHP:
<?php
$cadena 
'El veloz murciélago hindú comía feliz cardillo y kiwi.';

$patrones = array();
$patrones[0] = '/veloz/';
$patrones[1] = '/hindú/';
$patrones[2] = '/murciélago/';

$sustituciones = array();
$sustituciones[2] = 'galápago';
$sustituciones[1] = 'africano';
$sustituciones[0] = 'lento';

echo 
preg_replace($patrones$sustituciones$cadena);
/* 
RESULTADO 
El galápago lento africano comía feliz cardillo y kiwi.
*/
?>
__________________
Unset($vida['malRollo']);
  #6 (permalink)  
Antiguo 27/09/2016, 14:36
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 9 años, 5 meses
Puntos: 91
Respuesta: Extraer texto de una oracion dada una palabra a buscar

Podrias estar haciendo cortes de cadenas tambien y despues lo juntas ;)
Código PHP:
Ver original
  1. <?php
  2. $text = "In a metus vel nulla tincidunt bibendum. Ut lorem ipsum, maximus at mattis sit amet, maximus non nunc. Fusce mattis enim est, et iaculis nibh convallis vel. Quisque cursus, purus non elementum tincidunt, dui nulla vulputate mi, ac tincidunt magna purus eu magna. Nullam euismod nibh et neque lobortis,";
  3. $a = explode("lorem", $text, 2);
  4. $a = explode(",", $a[1], 3);
  5. echo $a[1];
  6. ?>
  #7 (permalink)  
Antiguo 27/09/2016, 18:09
 
Fecha de Ingreso: junio-2008
Mensajes: 74
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Extraer texto de una oracion dada una palabra a buscar

Saludos amigos gracias por responder..

Lo que queria hacer es obtener cortar un campo text del mysql de una palabra buscada en el ejemplo lo explico muy bien., si la palabra esta entre el texto yo corto hacia atras y le asigno ... coloco un pedazo del texto con la palabra y luego si no es el final le coloco ... mas abajo va un link de TRIPADVISOR del ejemplo hay algunos comentarios que tienen ... al incio y resaltan su pabra.


Ejemplo oracion:

In a metus vel nulla tincidunt bibendum. Ut lorem ipsum, maximus at mattis sit amet, maximus non nunc. Fusce mattis enim est, et iaculis nibh convallis vel. Quisque cursus, purus non elementum tincidunt, dui nulla vulputate mi, ac tincidunt magna purus eu magna. Nullam euismod nibh et neque lobortis,

Palabra a buscar: lorem

Resultado: ... nulla tincidunt bibendum. Ut lorem ipsum, maximus at mattis sit amet ...

Link con el ejemplo. la palabra a buscar es PIZZA

https://www.tripadvisor.it/SearchFor...taly__2E__html
  #8 (permalink)  
Antiguo 27/09/2016, 18:20
 
Fecha de Ingreso: junio-2008
Mensajes: 74
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Extraer texto de una oracion dada una palabra a buscar

Bueno amigo he desarrollado una solucion al problema espero con mas tiempo poder optimizarlo un poco mas. pero alli va bien y es funcional por lo que continuare con mi proyecto y ya luego lo optimizare. o si alguno se anima a simplificarlo mas seria de utilidad. una vez mas muchas gracias por sus respuestas...

<?php
function getSubContent($string, $pos, $length=NULL)
{

$lng=strlen($string);
if ($length == NULL)
$length = 50;
if($pos>$length) {
$inicio=$pos-$length;
$hasta=$length;
}else{
$inicio=0;
$hasta=$pos;
}
if($pos>0){
$stringDisplay = substr(strip_tags($string), $inicio,$hasta);
}
if($inicio!=0){
$stringDisplay = '...'.$stringDisplay;
}
$stringDisplay .= substr(strip_tags($string),$pos, $length);

if (strlen(strip_tags($string)) > $length)
$stringDisplay .= '...';
return $stringDisplay;
}

$str="In a metus vel nulla tincidunt bibendum. Ut lorem ipsum, maximus at mattis sit amet, maximus non nunc. Fusce mattis enim est, et iaculis nibh convallis vel. Quisque cursus, purus non elementum tincidunt, dui nulla vulputate mi, ac tincidunt magna purus eu magna. Nullam euismod nibh et neque lobortis";

$q="lorem"; //texto a buscar

$m=strpos(strtolower($str),strtolower($q)); //POS DE LA PALABRA

//SIN DARLE ESTILO
print getSubContent(q,$m,100);

//Y PARA RESALTAR MI PABRA LE COLOQUE UN ESPAN CON ESTILO CSS
print str_ireplace($q,"<span class='destacar'>".strtolower($q).'</span>',getSubContent($str,$m,100));

?>
  #9 (permalink)  
Antiguo 02/10/2016, 12:33
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Extraer texto de una oracion dada una palabra a buscar

tanto strpos como strstr a la hora de buscar son muy especificos si quieres encontrar una palabra o una cadena yo e terminado indagando en otras funciones como in_array y preg_replace .

te recomiendo que busques la solucion mas inmediata create tu funcion en caso de no encontrar lo que buscas.

Etiquetas: palabra
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:46.