¿Puedo extraer párrafos html de mysql en lugar de contar caracteres?

Estoy usando este código para extraer texto de la base de datos y funciona bien. ¿Puedo hacer que extraiga solo el primer o segundo párrafo en lugar de contar hasta 640 caracteres?

$this->data['getshorty'] = utf8_substr(html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8'), 0, 640);

preguntado el 12 de junio de 12 a las 16:06

¿Cómo se dividen los párrafos? ¿Se pone cada párrafo en <p> etiquetas o simplemente hay 2 saltos de línea después de los párrafos (por ejemplo, simplemente presionando la tecla de retorno dos veces)? Tal vez publicar un ejemplo de una descripción del producto. -

Sí, el párrafo se divide así: Procesador Intel Core 2 Duo Impulsado por un procesador Intel Core 2 Duo a velocidades de hasta 2.16 GHz, el nuevo MacBook es el más rápido hasta ahora. -

es difícil analizar html en MySQL. Te recomiendo que selecciones todo el campo y luego proceses los datos usando un DOMDocument: php.net/manual/en/class.domdocument.php -

1 Respuestas

Aquí hay una solución simple que debería funcionar si sus párrafos están en <p></p> tags:

$fullDescription = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');
preg_match('/<p\s*>(.)*<\/p\s*>/isU',$fullDescription,$matches);
$this->data['getshorty'] = $matches[0];

Con suerte, la expresión regular en la segunda línea tiene sentido para usted, ¡pregunte si no!

Aunque analizar HTML con expresiones regulares generalmente se considera una mala práctica, creo que para un ejemplo simple como este está bien.

Respondido el 14 de junio de 12 a las 17:06

Gracias me sale este error: Notice: Undefined offset: 0 Si cambio las coincidencias a 1, el error se lee igual, excepto que el número cambia a 1. - Stefan

@Stefan Acabo de actualizar la expresión regular en mi respuesta, ¿podría intentarlo nuevamente con este nuevo código? - Timm

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.