tu expresión contempla caracteres de HTML puros... y tu, al emplear
htmlentities() escapas dichos caracteres haciendo inútil la susodicha...
para todo... hay una excepción, okey, no es tan complejo...
Código PHP:
<?php
//con esto llamo la url del navegador ... OK
$url=$_GET['url'];
//esto imprime el codigo fuente ... OK
function getSource($host,$page) {
$archivo = file("http://$host/$page");
// reset ($archivo); // esto no es necesario ... OK
// en este punto no debes imprimir el resultado...
// mas bien, debes devolverlo para poder usarlo fuera
$out = '';
while (list ($clave, $val) = each ($archivo)) {
// llegado a este punto, debes concatenar las lineas
// del archivo en tu varible de salida (previamente declarada)
$out .= $val;
// echo htmlentities($val).'<br>'; // esto no es necesario ... OK
}
return $out;
}
// ahora obtenemos el codigo generado de la pagina
$source = getSource("megavideo.com","$url");
// esto definitivamente un error, te sugiero releer e investigar mas
//y esto debería sacar lo que esta entre las etiquetas object
// $html='htmlentities($val)';
// significa: el reemplazo debe obtener solo la primer captura
$html = '\\1';
$parser='|<object (.*?)object>|is'; // ... OK
// siempre hay que declarar nuestras variables
$embed = '';
if (preg_match($parser, $html, $embed1))
{
$embed = $embed1[1]; // no es necesario concatenar
}
echo '<object '.$embed.' object>'; // ... ???
?>