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

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

Resolvendo problema de conexão do Skype Beta no Debian

Configurando o X em sistemas Debian ou similares na linha de comando

Ache vídeos do youtube facilmente

Twitter no pidgin

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

Leitura recomendada

Módulo de etiquetas para plataforma Magento - Disponível gratuitamente

WordPress - Sistema de gerência de conteúdo na web (blogs)

Symbol Browser no GEdit do OpenSUSE 11.1

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

Como Adicionar 10 dias a data atual no PHP

  

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