PHP file_get_contents

4 Cevap php

Bir kullanıcı bir web sayfasına bir bağlantı sağlayacak, bir PHP komut dosyası oluşturmak için arıyorum ve bu web sayfasının içeriğini almak ve içeriklerine dayalı içeriğini ayrıştırmak olacaktır.

Örneğin, bir kullanıcı bir YouTube bağlantı sağlar:

http://www.youtube.com/watch?v=xxxxxxxxxxx

Sonra, o video ile ilgili temel bilgileri çekecek (küçük resim, embed kodu?)

Ya da bir vimeo bağlantı sağlayabilir:

 http://www.vimeo.com/xxxxxx

Ya onlar gibi bağlı bir video olmadan herhangi bir bağlantıyı, sağlamak için bile:

 http://www.google.com/

Ve bu sadece sayfa başlığı ya da bazı meta içerik kapmak olabilir.

Ben file_get_contents kullanmak zorunda düşünüyorum, ama ben bu bağlamda nasıl kullanılacağını tam olarak emin değilim.

Bunu gerçekleştirmek böylece ben tüm kod yazmak, ama belki bazı araçlar ile sağlamak beni birisi için aramıyorum.

4 Cevap

Ya kullanabilirsiniz curl veya http kütüphane. Bir http isteği göndermek ve http yanıtı bilgi almak için kütüphane kullanabilirsiniz.

Bu soru oldukça eski olduğunu biliyorum, ama birisi aynı şeyi arıyoruz vurur sadece durumda cevap olacak.

YouTube, Vimeo, Wordpress, Slideshare, Hulu, Flickr ve diğer birçok hizmet için oEmbed (http://oembed.com/) kullanın. Listede olmayan ya da bunu daha kesin yapmak istiyorsanız, bunu kullanabilirsiniz:

http://simplehtmldom.sourceforge.net/

(: Bütün görüntüler, bir div içeriğini almak, vs, bir düğümün içeriği) (hayır HTML yalnızca metin dönmek yani) Bu kod parçalarını almak için HTML seçicileri kullanabilirsiniz anlamı, PHP için jQuery bir çeşit.

Böyle bir şey (daha şık yapılabilir ama bu sadece bir örnek olabilir) yapabilirdi:

    require_once("simple_html_dom.php");
function getContent ($item, $contentLength) 
{
    $raw;
    $content = "";
    $html;
    $images = "";

    if (isset ($item->content) && $item->content != "")
    {
        $raw = $item->content;
        $html = str_get_html ($raw);            
        $content = str_replace("\n", "<BR /><BR />\n\n", trim($html->plaintext));

        try
        {
            foreach($html->find('img') as $image) {
                if ($image->width != "1") 
                {
                    // Don't include images smaller than 100px height
                    $include = false;
                    $height = $image->width;
                    if ($height != "" && $height >= 100)
                    {
                        $include = true;
                    }
                    /*else
                    {
                        list($width, $height, $type, $attr) = getimagesize($image->src);
                            if ($height != "" && $height >= 100)
                                $include = true;
                    }*/                 

                    if ($include == true)
                    {
                        $images = $images . '<div class="theImage"><a href="'.$image->src.'" title="'.$image->alt.'"><img src="'.$image->src.'" alt="'.$image->alt.'" class="postImage" border="0" /></a></div>';
                    }
                }
            }
        }
        catch (Exception $e) {
            // Do nothing
        }

        $images = '<div id="images">'.$images.'</div>';
    }
    else
    {
        $raw = $item->summary;
        $content = str_get_html ($raw)->plaintext;
    }

    return (substr($content, 0 , $contentLength) . (strlen ($content) > $contentLength ? "..." : "") . $images);
}

file_get_contents() Eğer php.ini allow_fopen_url set to true olduğunu varsayarak bu durumda çalışacak. Ne yapmak istiyorsunuz gibi bir şey:

$pageContent = @file_get_contents($url);
if ($pageContent) {
    preg_match_all('#<embed.*</embed>#', $pageContent, $matches);
    $embedStrings = $matches[0];
}

O dedi, file_get_contents() başarı veya false başarısızlığı üzerinde içeriği alan diğer hata işleme yolunda size çok vermeyecektir. Eğer istek üzerinde daha fazla kontrole sahip zengin ve HTTP yanıt kodları erişmek istiyorsanız, curl fonksiyonları kullanmak ve özellikle de, curl_get_info , tepki bakmak için vb kodları, mim tipleri, kodlama, ilgi HTML aramak için ayrıştırma için kıvrılma veya file_get_contents() sizin kod ya aracılığıyla içeriği kez olsun aynı olacaktır.

Belki Thumbshots veya Snap zaten istediğiniz bazı işlevleri var?

Ben sizin için ne arıyorsanız tam değil biliyorum, ama en azından kullanışlı olabilir gömülü şeyler için. Ayrıca txwikinger zaten diğer soruyu yanıtladı. Ama belki bu yine ypu yardımcı olur.