Foros del Web » Programando para Internet » PHP »

Modificar Dom con PHP

Estas en el tema de Modificar Dom con PHP en el foro de PHP en Foros del Web. Tengo un string por ejemplo Código PHP: $variable  =  '...Texto.....  <img  src="img/imagen.gif"  width="152" height="212" />  ....Más Texto....' ;  Luego tengo un función que se encarga de cambiar el tamaño de ...
  #1 (permalink)  
Antiguo 28/01/2009, 18:23
 
Fecha de Ingreso: diciembre-2007
Mensajes: 169
Antigüedad: 16 años, 4 meses
Puntos: 6
Pregunta Modificar Dom con PHP

Tengo un string por ejemplo

Código PHP:
$variable '...Texto..... 
<img  src="img/imagen.gif"  width="152" height="212" /> 
....Más Texto....'

Luego tengo un función que se encarga de cambiar el tamaño de las imágenes

Código PHP:
modificarImg($variable,50);
echo 
$variable
Y el resultado debería ser:

Código HTML:
....Texto..... 
<img  src="img/imagen.gif"  width="50"  /> 
....Más Texto....
Ósea una función que tome un texto html y que entremedio del texto hallan imágenes y todas las imágenes las deje en el tamaño que yo le diga.

Php Dom ¿? pero ojala con php4 ... hosting grrr!!! :S
  #2 (permalink)  
Antiguo 28/01/2009, 18:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
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
  #3 (permalink)  
Antiguo 28/01/2009, 19:27
 
Fecha de Ingreso: diciembre-2007
Mensajes: 169
Antigüedad: 16 años, 4 meses
Puntos: 6
Respuesta: Modificar Dom con PHP

Wow!!!! Muy bueno!!! Lo estaba haciendo pero sin Expresiones Regulares (claro que ayudan!) pero este está mucho mejor, te pasaste muchas gracias y súper rápido!!!!

:D
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:45.