Dapatkan konten dengan cara lebih cepat dari url menggunakan php

Saya menggunakan php, saya ingin mendapatkan konten dari url dengan lebih cepat.
Berikut adalah kode yang saya gunakan.
Kode:(1)

<?php
    $content = file_get_contents('http://www.filehippo.com');
    echo $content;
?>

Berikut ini banyak metode lain untuk membaca file seperti fopen(), readfile() dll. Tapi menurut saya file_get_contents() lebih cepat daripada metode ini.

Dalam kode saya di atas ketika Anda menjalankannya, Anda melihat bahwa ia memberikan segala sesuatu dari situs web ini bahkan gambar dan iklan. Saya hanya ingin mendapatkan teks html paket tanpa gaya css, gambar, dan iklan. Bagaimana saya bisa mendapatkannya.
Lihat ini untuk memahaminya.
KODE:(2)

<?php
    $content = file_get_contents('http://www.filehippo.com');
    // do something to remove css-style, images and ads.
    // return the plain html text in $mod_content.
    echo $mod_content;
?>

Jika saya melakukan itu seperti di atas maka saya salah jalan, karena saya sudah mendapatkan konten lengkap dalam variabel $content dan kemudian memodifikasinya.
Bisakah di sini ada metode fungsi apa pun atau apa pun yang mendapatkan teks html langsung dari url .

Kode di bawah ini ditulis hanya untuk pemahaman, ini bukan kode php asli.
KODE IDEAL:(3);

<?php
    $plain_content = get_plain_html('http://www.filehippo.com');
    echo $plain_content; // no css-style, images and ads.
?>

Jika saya bisa mendapatkan fungsi ini, itu akan jauh lebih cepat daripada yang lain. Bisakah itu mungkin.
Terima kasih.


person Axeem    schedule 27.05.2013    source sumber
comment
Halaman http://www.filehippo.com sudah memiliki skrip dan gaya yang tertanam di dalamnya. Anda tidak dapat memilih untuk tidak mendownloadnya tetapi Anda dapat memfilternya.   -  person Dave Chen    schedule 27.05.2013


Jawaban (2)


Coba ini.

$content = file_get_contents('http://www.filehippo.com');
$this->html =  $content;
$this->process();
function process(){

    // header
    $this->_replace('/.*<head>/ism', "<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE html PUBLIC '-//WAPFORUM//DTD XHTML Mobile 1.0//EN' 'http://www.wapforum.org/DTD/xhtml-mobile10.dtd'><html xmlns='http://www.w3.org/1999/xhtml'><head>");

    // title
    $this->_replace('/<head>.*?(<title>.*<\/title>).*?<\/head>/ism', '<head>$1</head>');

    // strip out divs with little content
    $this->_stripContentlessDivs();

    // divs/p
    $this->_replace('/<div[^>]*>/ism', '') ;
    $this->_replace('/<\/div>/ism','<br/><br/>');
    $this->_replace('/<p[^>]*>/ism','');
    $this->_replace('/<\/p>/ism', '<br/>') ;

    // h tags
    $this->_replace('/<h[1-5][^>]*>(.*?)<\/h[1-5]>/ism', '<br/><b>$1</b><br/><br/>') ;


    // remove align/height/width/style/rel/id/class tags
    $this->_replace('/\salign=(\'?\"?).*?\\1/ism','');
    $this->_replace('/\sheight=(\'?\"?).*?\\1/ism','');
    $this->_replace('/\swidth=(\'?\"?).*?\\1/ism','');
    $this->_replace('/\sstyle=(\'?\"?).*?\\1/ism','');
    $this->_replace('/\srel=(\'?\"?).*?\\1/ism','');
    $this->_replace('/\sid=(\'?\"?).*?\\1/ism','');
    $this->_replace('/\sclass=(\'?\"?).*?\\1/ism','');

    // remove coments
    $this->_replace('/<\!--.*?-->/ism','');

    // remove script/style
    $this->_replace('/<script[^>]*>.*?\/script>/ism','');
    $this->_replace('/<style[^>]*>.*?\/style>/ism','');

    // multiple \n
    $this->_replace('/\n{2,}/ism','');

    // remove multiple <br/>
    $this->_replace('/(<br\s?\/?>){2}/ism','<br/>');
    $this->_replace('/(<br\s?\/?>\s*){3,}/ism','<br/><br/>');

    //tables
    $this->_replace('/<table[^>]*>/ism', '');
    $this->_replace('/<\/table>/ism', '<br/>');
    $this->_replace('/<(tr|td|th)[^>]*>/ism', '');
    $this->_replace('/<\/(tr|td|th)[^>]*>/ism', '<br/>');

    // wrap and close

}
private function _replace($pattern, $replacement, $limit=-1){
    $this->html = preg_replace($pattern, $replacement, $this->html, $limit);
}

untuk lebih lanjut - https://code.google.com/p/phpmobilizer/

person Jerin K Alexander    schedule 27.05.2013
comment
Tidak perlu menggunakan $this, jika sederhana cuplikan kode dapat digunakan di luar kelas. Atau setidaknya ubah menjadi kelas contoh sehingga tidak berpengalaman copy-paste tidak akan membuat kesalahan. - person kuldeep.kamboj; 27.05.2013

Anda dapat menggunakan ekspresi reguler untuk menghapus tag skrip css dan tag gambar, cukup ganti kode tersebut dengan spasi kosong

preg_replace($pattern, $replacement, $string);

untuk detail fungsi lebih lanjut, buka di sini: http://php.net/manual/en/function.preg-replace.php

person jad-panda    schedule 27.05.2013
comment
stackoverflow.com/questions/1732348/ - person Dave Chen; 27.05.2013
comment
jaD Anda bertanya kepada saya seperti kode(2) silakan lihat pertanyaan saya. Inilah alasan mengapa Ini tidak baik. Terima kasih. - person Axeem; 27.05.2013
comment
@ user2280065 , dari filehippo.com Anda tidak dapat memilih apa yang akan didapat atau tidak. setiap kali Anda mengirim permintaan untuk mendapatkan halaman filehippo.com, ia akan mengirimkan seluruh halaman setiap saat. yang dapat Anda lakukan adalah sesuatu seperti caching. menyimpan halaman yang paling sering digunakan. - person jad-panda; 27.05.2013