Pular para o conteúdo

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

Dica publicada em PHP / Internet
albert guedes albertguedes
Hits: 29.538 Categoria: PHP Subcategoria: Internet
  • Indicar
  • Impressora
  • Denunciar

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.

Magento - " Please enter a valid URL. Protocol is required (http://, https:// or ftp://) "

Como pegar mapas para UrbanTerror facilmente

Como montar partições freebsd no linux

Resolvendo problema de conexão do Skype Beta no Debian

Usando repositórios do Yum no Zypper do SuSE

Hospedagem gratuita PHP/MySQL

Brincando com IP no PHP

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

Hospedagem web grátis

Gamuza Open - Disponível novo módulo de fretes para Magento

#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

Entre na sua conta para comentar.