Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: erniker en 01 de Noviembre 2014, 18:19

Título: Duda en entrega de PHP CU00838B file_get_contents y substr_count
Publicado por: erniker en 01 de Noviembre 2014, 18:19
Bien, el enunciado es este:
Recupera el código fuente de tres páginas web diferentes y usando las funciones para cadenas de php muestra por pantalla cuántas veces aparece la etiqueta <h1> en cada una de ellas. Ejemplo de resultado a obtener: La etiqueta h1 aparece 34 veces en aprenderaprogramar.com. La etiqueta h1 aparece 45 veces en elmercurio.cl. La etiqueta h1 aparece 88 veces en clarin.com
Mi codiog es este:
Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<?php //Ejemplo aprenderaprogramar.com
$web0 "https://www.aprenderaprogramar.com";
$web1 "http://www.cuanto(insulto).com/";
$web2 "http://www.cuantarazon.com/";
$texto0 file_get_contents($web0);
$texto1 file_get_contents($web1);
$texto2 file_get_contents($web2);
$cadena "<h1>";
echo "La etiqueta h1 aparece ".substr_count($texto0$cadena). " veces en $web0";
echo "<br>";
echo "La etiqueta h1 aparece ".substr_count($texto1$cadena). " veces en $web1";
echo "<br>";
echo "La etiqueta h1 aparece ".substr_count($texto2$cadena). " veces en $web2";
?>

</body>
</html>

Y el resultado que sale es este:
La etiqueta h1 aparece 0 veces en https://www.aprenderaprogramar.com
La etiqueta h1 aparece 0 veces en http://www.cuanto(insulto).com/
La etiqueta h1 aparece 4 veces en http://www.cuantarazon.com/

He probado la funcion file_get_contents con esta web, y no me muestra el código fuente, solo la pagina en texto plano... supongo que hay alguna funcion en el  codigo para protegerlo de este tipo de visualizaciones no?
Título: Re:Duda en entrega de PHP CU00838B file_get_contents y substr_count
Publicado por: Alex Rodríguez en 02 de Noviembre 2014, 14:46
Hola probando este código parece que sí funciona:

Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<?php //Ejemplo aprenderaprogramar.com
$web0 "https://www.aprenderaprogramar.com/";
$web1 "http://www.aprendeaprogramar.es/";
$web2 "http://www.cuantarazon.com/";
$texto0 file_get_contents($web0);
$texto1 file_get_contents($web1);
$texto2 file_get_contents($web2);
$cadena "<h1";
echo "La etiqueta h1 aparece ".substr_count($texto0$cadena). " veces en $web0";
echo "<br>";
echo "La etiqueta h1 aparece ".substr_count($texto1$cadena). " veces en $web1";
echo "<br>";
echo "La etiqueta h1 aparece ".substr_count($texto2$cadena). " veces en $web2";
?>

</body>
</html>

El resultado que me muestra es:

La etiqueta h1 aparece 0 veces en https://www.aprenderaprogramar.com/
La etiqueta h1 aparece 1 veces en http://www.aprendeaprogramar.es/
La etiqueta h1 aparece 5 veces en http://www.cuantarazon.com/

Si pruebas este código y no te muestra resultados puede deberse a alguna restricción que tenga tu servidor.

Sobre que no te muestre el código fuente, ten en cuenta que si estás usando la función echo de php esta función no es para mostrar texto, sino para insertar código html en la página, entonces al hacer echo sobre código html lo que hace es insertarte código html y lo verás como se vería una página web

Nota: he puesto como cadena a detectar <h1 para así detectar tanto <h1> como <h1 style="color: red;"> ... </h1>

Saludos
Título: Re:Duda en entrega de PHP CU00838B file_get_contents y substr_count
Publicado por: erniker en 02 de Noviembre 2014, 15:42
Ok, gracias!