50 palabras en Php

Hola Bankhacker.
Tengo un problema que no sé cómo solucionar. Estoy programando mi primera página en PHP con Mysql, y la cuestión es que quiero hacer un "resumen" de los artículos que aparezcan en la misma, enseñando las primeras 50 palabras de los mismos (recogidos, lógicamente, de una DB).
En Asp (el lenguaje que más manejo) sé perfectamente cómo hacerlo, pero en PHP ando un poco perdido. ¿Sabrías hacerlo?
Gracias, un saludo (y cuenta con un 5) ;-)

1 respuesta

Respuesta
1
En primer lugar, extrae en una variable todo el contenido del artículo. Luego aplica una expresión regular que sólo se quede con las primeras 50 palabras:
$articulo = eregi_replace("^(\w+\W+)", "\\1", $articulo);
Seleccionaria la primera palabra y el espacio en blanco o tabulación siguiente.
$articulo = eregi_replace("^(\w+\W+\w+\W+\w+\W+)", "\\1", $articulo);
Seleccionaría las tres primeras palabras y los espacios en blanco o tabulaciones entre palabras.
Si quieres seleccionar 50 palabras, sería:
$articulo = eregi_replace("^(\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+)", "\\1", $articulo);
No sé qué es lo que hago mal, porque me devuelve todas las palabras, y no sólo unas cuantas. Te pongo el código que he escrito:
- Esto para obtener todo el texto:
<?php
$conexion=$conn_->Execute("SELECT texto FROM articulos") or DIE($conn_->ErrorMsg());
$conexion_numRows=0;
$conexion__totalRows=$conexion->RecordCount();
$articulo = $conexion->Fields("texto");
$texto = eregi_replace("^(\w+\W+)", "\\1", $articulo);
?>
- Esto para mostrar el texto:
<?php echo $texto ?>
He probado mil cosas y me sigue mostrando todas las palabras.
Gracias por tu atención.
Al final he solucionado el problema de esta manera: $ar=explode(' ',$cadena); for($i=0;$i<10;$i++) echo("{$ar[$i]} ");
De todos modos, te doy un 5 por haberme atendido. Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas