Foros del Web » Programando para Internet » PHP »

dividir cadenas entre algo y otra cosa

Estas en el tema de dividir cadenas entre algo y otra cosa en el foro de PHP en Foros del Web. bien, mi problema es q tengo un codigo html en una base de datos por comodidad está sin saltos <br> pero si con retorno /r ...
  #1 (permalink)  
Antiguo 17/03/2004, 19:34
Avatar de SkyWalker  
Fecha de Ingreso: enero-2002
Mensajes: 39
Antigüedad: 22 años, 2 meses
Puntos: 0
dividir cadenas entre algo y otra cosa

bien, mi problema es q tengo un codigo html en una base de datos por comodidad está sin saltos <br> pero si con retorno /r entonces con la funcion nl2br(); convierto los retornos en saltos de linea <br> todo va perfecto hasta q introduzco una tabla, q se va al carajo porque introduce <br> entre las etiketas tal q así:

<table>
<tr>
<td></td>
</tr>
<br /><br />
</table>

Entonces la idea es partir la cadena para q en una parte del codigo aplique la función nl2br(); y lo q va entre <table> y </table> no la aplique.

Pero no se me viene a la cabeza como hacer esto.

habia pensado en dividir la cadena por <table> pero no para hasta el final o hasta otro <table> y no me vale.

Me pueden dar alguna idea para seleccionar el código q va de <table> a </table> teniendo en cuenta q puede aparecer varias veces?

Gracias.
  #2 (permalink)  
Antiguo 17/03/2004, 21:24
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 20 años, 11 meses
Puntos: 1
Puedes probar ese codigo, no lo he probado pero deberia funcionar

Código PHP:


$text
=strtolower($text);
    
preg_match_all("/<table.*?>(.*?)<\/table>/is"$text$tags); 
donde las tablas las tienes en un array $tags[0]

osea que :

$tags[0][0] 1 tabla
$tags[0][1] otra tabla ... etc etc..

a ver si te sirve

Saludos
  #3 (permalink)  
Antiguo 18/03/2004, 03:28
Avatar de SkyWalker  
Fecha de Ingreso: enero-2002
Mensajes: 39
Antigüedad: 22 años, 2 meses
Puntos: 0
Hola, gracias por la respuesta lo probaré... pero a mi me gusta comprender lo que hago porque si no, no lo aprendo, he visto un poko la funcion preg_match_all() en el manual y me hago una idea pero sinceramente /<table.*?>(.*?)</table>/is me suena a chino, cosas de este tipo las he visto en otras funciones pero como nunca las he utilizado pues no lo entiendo... podrías dar una explicación poko más o menos sencilla.


Gracias
  #4 (permalink)  
Antiguo 18/03/2004, 04:56
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 20 años, 11 meses
Puntos: 1
bueno en si, lo que hace esta expresion, (no es que sea muy ducho en ellas eh?), pues es coger todo lo que haya en el tag
<table ... mas todo lo que este dentro de este tag>(ponerlo en este parentesis) hasta que llegue al tag de cierre </table>
.*? esto son comodines, que te recoge todos los caracteres

en ese URL, tienes un manual interesante de expresiones regulares

http://www.ignside.net/man/php/regex.php

saludos,
  #5 (permalink)  
Antiguo 18/03/2004, 10:46
Avatar de SkyWalker  
Fecha de Ingreso: enero-2002
Mensajes: 39
Antigüedad: 22 años, 2 meses
Puntos: 0
Nada me peleo y nada no consigo nada, esto de las expresiones regulares es bastante complicado. una ayudita para lo q quiero, pliz!

$html ="
Hola


Hola

<table>
<TR>
<TD>Tabla 1</TD>
<TD></TD>
</TR>
</table>


otro oytre

";

En una variable:
"Hola


Hola
"

En otra:
"<table>
<TR>
<TD>Tabla 1</TD>
<TD></TD>
</TR>
</table>
"

y en otra:
"

otro oytre


"
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:54.