ob_start() - capturar páginas na web ou geradas na hora usando PHP e enviá-las por email

Publicado por albert guedes em 18/02/2010

[ Hits: 28.723 ]

Blog: https://teko.net.br

 


ob_start() - capturar páginas na web ou geradas na hora usando PHP e enviá-las por email



Para capturar uma página web utilizamos a função ob_start(), que nada mais faz do que guardar em um buffer todo o conteúdo de uma página HTML.

Eis duas maneiras legais de se fazer isso:

1. Por link direto

Você pode capturar qualquer página existente na rede no meio do código:

<?php

// Começa a captura da página.
ob_start();

// Imprime a página, mas ela não irá aparecer, porque será guardada
// no buffer.
include("http://www.paginadainternet.com,br");

// Pega a guardada pelo buffer e salva na variável "$conteudo".
$conteudo = ob_get_contents();

// Limpa o buffer.
ob_end_clean();

?>

A página será salva em "$conteudo" e você poderá fazer o que quiser com que está dentro dela.

2. Gerada na hora

Essa é a que mais gosto, pois você pode gerar a página na hora e enviar por email ou outra utilidade que você precisar. Para isso, a PRIMEIRA coisa que você tem que colocar na página a ser gerada é o "ob_start()".

<?php

// Começa a captura da página.
ob_start();

?>

<html>
...
RESTO DA PÁGINA
...
</html>

<?php

// Pega a página guardada pelo buffer e salva na variável "$conteudo".
$conteudo = <a href="http://br2.php.net/manual/en/function.ob-get-contents.php">ob_get_contents()</a>;

// Limpa o buffer.
<a href="http://br2.php.net/manual/en/function.ob-end-clean.php">ob_end_clean()</a>;

?>

Simplesmente é a mesma coisa que o primeiro modo, a diferença é que ele captura a página que nós mesmos geramos. Pode ter inclusive código PHP no meio, o que é capturado é a saída da página.

E novamente avisando, a página não será mostrada porque ela será armazenada no buffer.

Para armazenar no buffer e ainda ver a página, apenas imprima de novo usando "$conteudo":

<?php

// Limpa o buffer.
ob_end_clean();

// Imprime o conteudo de "$conteudo", ou seja, mostra a página mesmo.
print $conteudo;

?>

E podemos ainda enviar por email:

<?php
// Limpa o buffer.
ob_end_clean();

// Imprime o conteudo de "$conteudo", ou seja, mostra a página mesmo.
print $conteudo;

// Função "<a href="http://php.net/manual/en/function.mail.php">mail()</a>" do PHP envia emails.

// Email do remetente.
$from="fulano@mail.com";

// Assunto do email.
$subject="Minha página capturada DUDE !";

// A mensagem do email, no caso, é a página capturada.
$message=$conteudo;

// Determina o tipo de stream enviado, no caso, é um html.
$header="Content-type: text/html; charset=iso-8859-1\r\n";

// Enviando o email.
mail($from,$subject,$message,$header);

?>

É isso aí pessoal, que seja de bom proveito, e até a próxima dica.

Outras dicas deste autor

Separar caracteres de uma string no PHP

[RESOLVIDO] Magento: Não consigo fazer login de administrador após instalação

Bash: Não use if

Placa Wireless Atheros AR5001 - Configuração no Debian Squeeze

Função em PHP que mostra o número da semana no ano

Leitura recomendada

Brincando com IP no PHP

Disponível a nova versão do módulo de boletos para a plataforma Magento

Servidor LAMP e MediaWiki no Ubuntu Linux com apenas uma linha de comando

Hospedagem gratuita PHP/MySQL

Instalação do MoreGroupware

  

Comentários
[1] Comentário enviado por ivani em 14/07/2010 - 14:08h

Parabens pela dica!
Muito bem explicada, achei em uma boa hora! :)



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts