Hola probando este código parece que sí funciona:
<!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