Foros del Web » Programando para Internet » PHP »

Exprecion regular - preg_replace()

Estas en el tema de Exprecion regular - preg_replace() en el foro de PHP en Foros del Web. Buenas tardes, tengo el siguiente html: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < span class = "Apple-style-span" style = "font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; ...
  #1 (permalink)  
Antiguo 28/11/2011, 21:00
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Exprecion regular - preg_replace()

Buenas tardes,

tengo el siguiente html:
Código HTML:
Ver original
  1. <span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: large;">texto</span>

y necesitaría eliminar la propiedad "style" o dejarla vacia..

Intenté con algo asi pero no me funciona:

Código PHP:
Ver original
  1. $p = preg_replace('/<span (.*) style="[^"]*"^/', '<span', $p);

Cualquier ayuda será agradecida..

Gracias!
  #2 (permalink)  
Antiguo 28/11/2011, 22:42
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Exprecion regular - preg_replace()

Que tal esto?
Código PHP:
Ver original
  1. $p = preg_replace('/<span (.*) style=".*">/', '<span $1>', $p);
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 28/11/2011, 22:49
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: Exprecion regular - preg_replace()

date una vuelta por aqui

http://www.forosdelweb.com/f18/aport...s-pcre-646110/

saludos
__________________
Es duro fracasar en algo, pero es mucho peor no haberlo intentado. - Si crees todo lo que lees, mejor no leas -
  #4 (permalink)  
Antiguo 29/11/2011, 08:25
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Exprecion regular - preg_replace()

Otra forma de hacerlo es con DOM, algo así
Código PHP:
Ver original
  1. <?php
  2. $html = <<<HTML
  3. <span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: large;">texto</span>
  4. HTML;
  5. $dom = new DOMDocument();
  6. $dom->loadHTML($html);
  7. foreach($dom->getElementsByTagName('span') as $v){
  8.     //Remover el attributo deseado
  9.     //Otra forma de hacerlo es:
  10.     //$v->setAttribute('style', '');
  11.     $v->removeAttribute('style');
  12.  
  13.     //Obtener los demás atributos y añadirlos a un array
  14.     $attrs = array();
  15.     foreach($v->attributes as $attrName => $attrNode){
  16.         $attrs[] = $attrName . '="' . $attrNode->nodeValue . '"';
  17.     }
  18.  
  19.     //Mostrar el resultado final de los elementos
  20.     echo htmlentities('<' . $v->nodeName . ' ' . implode(' ', $attrs) . '>' . $v->nodeValue . '</' . $v->nodeName . '>');
  21. }
Considero que es la mejor forma de parsear, editar y añadir en los documentos HTML/XML, ya que es bien flexible a la hora de trabajarlos
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 29/11/2011 a las 08:34 Razón: Añadir notas al código
  #5 (permalink)  
Antiguo 29/11/2011, 08:50
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Exprecion regular - preg_replace()

Gracias a todos por las respuestas!

primero, la exprecion de Sourcegeek no me funciona, como que deja "mal cerrada" la etiqueta y se ve mal toda la pagina..

El link que dejo zerpico_01 es muy interesante, voy a poder aprender un poco, nunca me gustaron estas expreciones

abimaelrc, como podria aplicar el DOMParser, lo que estoy haciendo en leer un feed de blogger (blogspot) y los muestra con estilos horribles..

Código PHP:
Ver original
  1. $blogger = xml2array ( file_get_contents($url_post) );

Asique agarro el feed y lo paso a array con la clase xml2array(), y luego le tendria que aplicar el DOM parser? se me va a hacer muy lento no?

Le puedo pasar al DOM parser un array en lugar de un ducumento HTML?

Gracias!
  #6 (permalink)  
Antiguo 29/11/2011, 09:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Exprecion regular - preg_replace()

Para leer feeds hay clases muy utiles como por ejemplo Magpie RSS
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 29/11/2011, 09:56
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Exprecion regular - preg_replace()

Ahí le doy una mirada.. pero igualmente el problema con las etiquetas que vienen con estilos lo voy a seguir teniendo.. o tendrá esta clase algo para limpiarlas?

Saludos
  #8 (permalink)  
Antiguo 29/11/2011, 11:00
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Exprecion regular - preg_replace()

Bueno si no lo tiene como quiera puedes limpiarlo con DOM, sigue el ejemplo que te expuse para que veas como lograrlo
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 29/11/2011, 17:37
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Exprecion regular - preg_replace()

Si hubieras tenido la dedicación y el verdadero esfuerzo, hubieras sido completamente capaz de arreglar la expresión regular
que puse para que funcione correctamente. Es una lástima que no te hayas tomado la 'molestia' de leer un poquito en lugar
de haber hecho copy-paste.

Si deseas repararla, te doy como pista que falta $2.
Si no, lástima

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: html, regular
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 23:40.