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.482 ]

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

Configurar o alsa sem o alsaconf

Dando permissão a outros usuários para usarem os devices

Separar palavras de uma string no PHP

Mostrar as tabelas de um banco de dados no PostgreSQL usando PHP

Comando "locate" sumido no SuSE Linux

Leitura recomendada

JS Calls PHP - biblioteca que possibilita interacão entre Javascript e PHP

Symbol Browser no GEdit do OpenSUSE 11.1

Configurando rapidamente Apache + PHP + MySQL + phpmyadmin no Ubuntu 11.04

Espaço grátis para PHP e MySQL 50MB/PHP e 25MB/MYSQL

Apache2 com suporte a SSL

  

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