Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/01/2009, 18:58
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: Modificar Dom con PHP

hola... estuve practicando con tu idea, y logre esto... sin extensiones DOM

Código PHP:
<?php


// parser "DOM"
function c_img($str$args = array(), $rem null)
{
  
$expr '/<img([^>]*)\/?>/ie'// regex

    // usamos un callback para el reemplazo
  
$str preg_replace($expr'__call_c_img("\\1", $args, $rem);'$str);

  return 
$str;
}

function 
__call_c_img($m,$z,$p)
{
  
// regex para los atributos...
  
preg_match_all('/([a-z0-9:_-]+)=([\'\"])(.+?)\\2/'$m$a);
  
  
$args = array();
  foreach (
$a[1] as $i => $attr)
  {
        
// construimos array
        
$args[$attr] = $a[3][$i];
  }
  
  
  
$out null// atributos
  
  //
  
$q explode('|'$p);
  
$z array_merge($args,$z);
  
  foreach (
$z as $key => $val)
  {
        if ( ! 
in_array($key$q))
        {
            
// indice="valor"
            
$out .= ' ' $key '="' $val '"';
        }
  }
  
  
// salida HTML
  
return "<img$out/>";
}

$variable '...Texto..... 
<img  src="img/imagen.gif"  width="152" height="212" /> 
....Más Texto....'
;




// el segundo argumento es un array con los atributos
// a cambiar, o añadir ....

echo c_img($variable, array('width' => 50'height' => 50));

// con el tercer argumento, omitimos atributos específicos
// ejemplo...

echo c_img($variable, array('width' => 50), 'height|alt|title');
tan solo es un ejemplo, para la etiqueta <img/>, pero sin duda con un poco de OOP y creatividad se puede aplicar a cualquier etiqueta tipo XML


espero te sirva de algo, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 28/01/2009 a las 19:07