Foros del Web » Programando para Internet » PHP »

ajustar tamaño de video

Estas en el tema de ajustar tamaño de video en el foro de PHP en Foros del Web. hola que tal banda, jaja ¿que onda con eso? bueno bueno. Hace rato que llevo creando mi primer script php y el señor pateke me ...
  #1 (permalink)  
Antiguo 29/12/2009, 19:17
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
ajustar tamaño de video

hola que tal banda, jaja ¿que onda con eso?

bueno bueno.

Hace rato que llevo creando mi primer script php y el señor pateke me dio un megaempujon.

y salió esto.

Código PHP:
<?php 
$url 
$_GET['url'];

function 
getSource($host,$page) { 
  
$archivo file("http://$host/$page"); 
  
$out '';
  while (list (
$clave$val) = each ($archivo)) { 
    
$out .= $val;
  }
  return 
$out;


$source getSource("megavideo.com","$url");
$parser='|<object (.*?)object>|is';  // ... OK

$embed '';
if (
preg_match($parser$source$embed1)) 

  
$embed $embed1[1];

echo 
'<object  '.$embed.' object>';  
?>
funciona a la perfección y me genera el siguiente codigo impreso

Código HTML:
<object  width="' + cwidth + '" height="' + cheight + '"><param name="movie" value="http://www.megavideo.com/v/SRB7TFW0480b4ff7541dc5edd403109c47aa9317"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.megavideo.com/v/SRB7TFW0480b4ff7541dc5edd403109c47aa9317" type="application/x-shockwave-flash" allowfullscreen="true" width="' + cwidth + '" height="' + cheight + '"></embed></ object> 
aqui el problema a solucionar, por mi parte claro esta, es ajustar el tamaño de este video.

alguien me puede dar una sugerencia?

"sugerencia" aclaro, pa saber por donde tirarle piedras al sapo.

  #2 (permalink)  
Antiguo 29/12/2009, 19:45
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: ajustar tamaño de video

pues con str_replace estaria bien...
__________________
Hospedaje Web al mejor costo!
  #3 (permalink)  
Antiguo 29/12/2009, 22:55
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: ajustar tamaño de video

claro ya entiendo, estoy estudiandolo para ver si le hayo la forma saludos.
  #4 (permalink)  
Antiguo 30/12/2009, 00:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: ajustar tamaño de video

de hecho, esto se soluciona mucho mejor con expresiones regulares

¿porque??

sirven precisamente para solventar casos donde se presentan patrones, ya sea extraer información o bien, reemplazarla...

str_replace() funciona también, pero es muy primitivo y sirve solo para cuestiones puntuales no dinámicas, o algo así...

en este caso, el HTML a cambiar contiene el siguiente patrón (que parece que proviene de Javascript):
Cita:
width="' + cwidth + '"
este, es nuestro patrón ... ahora solo debemos elaborar nuestra expresión, y elegir la función adecuada: preg_replace()
Código PHP:
$source = <<<HTML
<object  width="' + cwidth + '" height="' + cheight + '"><param name="movie" value="http://www.megavideo.com/v/SRB7TFW0480b4ff7541dc5edd403109c47aa9317"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.megavideo.com/v/SRB7TFW0480b4ff7541dc5edd403109c47aa9317" type="application/x-shockwave-flash" allowfullscreen="true" width="' + cwidth + '" height="' + cheight + '"></embed></ object> 

HTML;

$regex '/(width|height)="\' \+ c\\1 \+ \'"/Uise';
$repl '"\\1=\"".$\\1."\""';

$width 400;
$height 260;

echo 
htmlspecialchars(preg_replace($regex$repl$source)); 
claramente, hay varios aspectos que explicar... pero bastan los importantes:


la expresión regular consta de "cierto atributo, con un valor parecido a una concatenación de javascript..."
Cita:
/ separador
(width|height) atributos
=" igual y comilla, atributo
\' \+ c\\1 \+ \' concatencion*
" comilla de cierre, atributo
/Uise separador y modificadores
* hay que notar que se escapan las caracteres especiales contenidos en el patrón, además, hace un seguimiento de la primer captura.... se prefija la letra c para corroborar el patrón (creo que se entiende, ¿cierto?)

vale, tal ves no es tan simple...

ahora lo mas importante (ya que hace toda la "magia"), el reemplazo corresponde a la lógica del modificador e de nuestra expresión, que evalúa el reemplazo directamente (¡y en el mismo contexto!) como PHP...
Código PHP:
$repl '"\\1=\"".$\\1."\""'
ésta si está fácil, solo es una cadena que representa un atributo... usando las capturas donde lo requieren, algo así...
Código PHP:
"foo=\"".$foo."\"" 
donde foo es resultado de la captura simultanea de width o height, etc..

de aquí mismo nacen las variables $width y $height que declaramos en el contexto del script, existentes ya para el momento de ejecutar nuestro reemplazo...

espero no haber sido muy técnico, suerte!!


--
Edito: después lo pensé un poco mas y me di cuenta que con str_replace() también se puede solventar:
Código PHP:
foreach (array('width' => 400'height' => 260) as $attr => $value)
{
  
$source str_replace("' + c$attr + '"$value$source);

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 30/12/2009 a las 00:34
  #5 (permalink)  
Antiguo 30/12/2009, 00:27
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: ajustar tamaño de video

eso fue facil

muchas gracias.

saludos.
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 19:55.