Foros del Web » Programando para Internet » PHP »

Dividir texto en partes

Estas en el tema de Dividir texto en partes en el foro de PHP en Foros del Web. Buenas noches, Tengo el siguiente codigo Código: $coincidencia_html = '/<p.*p>/'; preg_match_all($coincidencia_html, $texto, $texto_parrafos); que para un texto como este: Código: $texto='<p>Hola mundo</p> <p>Mi nombre es ...
  #1 (permalink)  
Antiguo 07/01/2009, 17:43
 
Fecha de Ingreso: marzo-2004
Mensajes: 283
Antigüedad: 20 años, 1 mes
Puntos: 2
Dividir texto en partes

Buenas noches,

Tengo el siguiente codigo
Código:
$coincidencia_html = '/<p.*p>/';
preg_match_all($coincidencia_html, $texto, $texto_parrafos);
que para un texto como este:
Código:
$texto='<p>Hola mundo</p>
<p>Mi nombre es Pepe</p>
<p>Soy de Madrid</p>'
Me devuelve el array
Código:
$texto_parrafos = array('<p>Hola mundo</p>','<p>Mi nombre es Pepe</p>','<p>Soy de Madrid</p>')
.
El problema viene cuando quiero que me haga lo mismo pero no solo con las etiquetas <p> sino tambien con las <ul> y las <img>. Es decir, que teniendo este texto
Código:
$texto='<p>Hola mundo</p>
<ul>
<li>Mi nombre es Pepe</li>
<li>Tengo 22</li>
</ul>
<img src "ruta/img.jpg" />
<p>Soy de Madrid</p>'
el array quede asi:
Código:
$texto_parrafos = array('<p>Hola mundo</p>','<ul><li>Mi nombre es Pepe</li><li>Tengo 22</li></ul>','<img src "ruta/img.jpg" />','<p>Soy de Madrid</p>')
.
Se que podia probar primero haciendo lo de antes con <p>, luego con <ul> y al final con <img>, pero haciendolo de esta manera no se mantendría el orden con el que aparecen las diferentes partes (me quedaria las dos primeras partes con <p>, la tercera con <ul> y la <img> iria la ultima, pero como veis en el texto anterior ese no es el orden correcto.
Ojala podais ayudarme con esto porque me estoy volviendo loco. Muchas gracias por vuestro tiempo

Última edición por SubZero_mb; 07/01/2009 a las 17:53
  #2 (permalink)  
Antiguo 07/01/2009, 19:01
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: Dividir texto en partes

Fijate si esto te sirve:

/(<p.*p>)|(<ul.*ul>)|(<img.*img>)/
__________________
Add, never Remove
  #3 (permalink)  
Antiguo 08/01/2009, 14:04
 
Fecha de Ingreso: marzo-2004
Mensajes: 283
Antigüedad: 20 años, 1 mes
Puntos: 2
Respuesta: Dividir texto en partes

Nada mariano, probando lo que tu me dijiste me da el siguiente error:

Código:
$coincidencia_html = '/(<p.*p>)|(<ul.*ul>)|(<img.*img>)/';

Parse error: syntax error, unexpected T_VARIABLE
Gracias de todas formas, alguien sabe cual puede ser la solución?
  #4 (permalink)  
Antiguo 08/01/2009, 15:35
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: Dividir texto en partes

mmm... debes estar tipeando mal algo. La única modificación que te pase es en la expresión regular, la cual sigue siendo válida. Chequea bien tu código. De todas formas, probé la expresión que te pasé y tampoco te daba lo que vos esperas. Pero con este patrón si vas a obtener lo que buscás:

'/(<ul(.|\n)*?ul>)|(<p.*p>)/'

Fijate que el caracter . localiza cualquier caracter menos un salto de línea, por lo tanto si estás buscando texto del estilo

<ul>
<li>dasda</li>
</ul>

Nunca te lo iba a encontrar, ya que entre <ul> y </ul> hay varios salto de línea.
Lo de la etiqueta img es un caso aparte, ya que es muy raro que contenga texto entre <img> e </img>. Si tenés una etiqueta del tipo <img src="blablabla"/> el patrón que te pasé tampoco te va a funcionar, porque se está buscando una etiqueta que tenga cierre también.
__________________
Add, never Remove
  #5 (permalink)  
Antiguo 10/01/2009, 18:30
 
Fecha de Ingreso: marzo-2004
Mensajes: 283
Antigüedad: 20 años, 1 mes
Puntos: 2
Respuesta: Dividir texto en partes

Ya he arreglado mas o menos lo que quería, pero con el <ul> me pasa exactamente lo que tu dices, que no me lo encuentra. Como podría hacer para seleccionar el texto entre las etiquetas <ul> y </ul>. O, en su defecto, si existe alguna funcion en php que me deje todo el texto en una sola linea, es decir, pasar de:

<ul>
<li>hola</li>
</ul>

a:

<ul><li>hola</li></ul>

Asi no tendría problemas con el salto de linea.

Muchas gracias

Última edición por SubZero_mb; 10/01/2009 a las 18:42
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 21:12.