Foros del Web » Programando para Internet » PHP »

cambiar texto

Estas en el tema de cambiar texto en el foro de PHP en Foros del Web. Hola, tengo la siguiente funcion: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código php: Ver original /**  * Reemplaza los tags por su codigo correspondiente.  *  * @param string $texto ...
  #1 (permalink)  
Antiguo 24/10/2009, 17:42
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
cambiar texto

Hola,
tengo la siguiente funcion:
Código php:
Ver original
  1. /**
  2.  * Reemplaza los tags por su codigo correspondiente.
  3.  *
  4.  * @param string $texto
  5.  * @return string
  6.  */
  7. function etiquetas($texto){
  8.     $abrir=str_replace('<p>[desplegable]','<div id="accordion">',$texto);
  9.     $abrirtitulo=str_replace('[titulo]','<h2><a href="#">',$abrir);
  10.     $cerrartitulo=str_replace('[/titulo]','</a></h2>',$abrirtitulo);
  11.     $abrircontenido=str_replace('[contenido]','<div><p>',$cerrartitulo);
  12.     $cerrarcontenido=str_replace('[/contenido]','</p></div>',$abrircontenido);
  13.     $cerrar=str_replace('[/desplegable]</p>','</div>',$cerrarcontenido);   
  14.     $tabla=str_replace('<table','<table summary="" ',$cerrar);
  15.     $texto=str_replace('[formulario]','<a href="index.php?modules=presupuesto" title="Pedir Presupuesto">formulario</a> ',$tabla);
  16.    
  17.     return $texto;
  18. }

lo que hace es que al parsarle un texto reemplaza ciertos tags [] por un codigo html el cual me permite crear un acordeon en jquery, anda de 10 pero tengo problemas cuando hay etiquetas <p> o </p> haciendo que el contenido se vea mal, mi duda es como puedo hacer para que dentro de esa función me elimine los <p> o si hay <p style=.....> y me cambie los </p> por <br/> que entre los tags [desplegable] y [/desplegable]

desde ya muchas gracias
  #2 (permalink)  
Antiguo 24/10/2009, 17:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: cambiar texto

pues tu lo has dicho... usa str_replace() para cambiar los <p> y </p> por <br />

o bien, usa strip_tags() antes de hacer tus reemplazos...

también puedes usar expresiones regulares
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/10/2009, 21:18
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Respuesta: cambiar texto

si se que puedo seguir usando str_replace, el tema es que dentro de $texto bien otras cosas que no deben modificarse, solamente lo que esta encerrado entre los tags [desplegable] y [/desplegable] y eso es lo que no hacer indicar al metodo que saque todos los <p> y los <p style=""> y que me cambio los </p> por <br/> que esten entre [desplegable] y [/desplegable]
  #4 (permalink)  
Antiguo 24/10/2009, 21:34
 
Fecha de Ingreso: septiembre-2009
Ubicación: Neuquén
Mensajes: 142
Antigüedad: 15 años, 1 mes
Puntos: 12
Respuesta: cambiar texto

Mira, yo estoy en medio de una clase, creando un parser de html... y encontre muchos metodos distintos...

Supongamos que tengas esto:
Código html:
Ver original
  1. <div>
  2.         <p>Primer p, dentro del primer div... </p>
  3.         <div>
  4.                 <p>Un p dentro de un div, dentro de otro div... </p>
  5.         </div>
  6. </div>
  7. <div>
  8.         <p>Un p de otro div aparte... </p>
  9. </div>

Supongamos que queres tomar SOLO el PRIMER div (que contiene un p y otro div...

si usas str_replace... te va a reemplazar todos los div... Si usas expresiones regulares, vas a lograr obtener esto:
Código html:
Ver original
  1. <div>
  2.         <p>Primer p, dentro del primer div... </p>
  3.         <div>
  4.                 <p>Un p dentro de un div, dentro de otro div... </p>
  5.         </div>

o todo... Ya que si encontras muchos iguales se te confunden... Y no seria correcto. Por eso vas a necesitar expresiones regulares y algo mas de programacion, incluso se puede hacer sin str_replace, y sin expresiones... Podes ir leyendo el archivo byte a byte y para encontrar lo que quieras utilizas strpos() o stripos(), substr(), etc...

Saludos
  #5 (permalink)  
Antiguo 25/10/2009, 15:16
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Respuesta: cambiar texto

ufff no pense que sería tanto lio jeje, a parte al texto no lo tengo en un archivo sino que esta almacenado en una base de datos. Y de expresiones regulares estoy mas verde de una lechuga jajaja,
  #6 (permalink)  
Antiguo 25/10/2009, 15:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: cambiar texto

pues si el texto esta en BD, en archivo, o lo que sea no debe ser problema...

digo al final siempre podemos asignar dicho contenido a una variable y hacer los reemplazos, cierto???


ahora, si no sabes expresiones regulares... pues, estudia!!
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 13:06.