Facebook'un "Bağlantı Algılama" öykünen bir kütüphane var mı?

2 Cevap

Ben bir bağlantı sonrası zaman facebook gibi bilgi yok "ayrıştırmak" bir kütüphane yazmak için arıyorum. Ancak ben tekerleği yeniden icat etmek istemiyorum gibi herkes bir kütüphane ya da zaten bunu yapar bir kitaplığı yazmak için çaba biliyor mu?

Eğer yüz kitap kullanmak istemiyorsanız, ne demek istediğimi bir kavrayışa almak böylece ben bir örnek dahil ettik.

2 Cevap

Bunun için herhangi bir kitaplık gördüm, ama oldukça basit bir şey görünüyor değil. Ben size yardımcı olabilir hızlı bir fonksiyonu aşağı zerre ettik. Ben basit, vb, bazı hata işleme koymak, içeriğini getirmek için cURL kullanmak isteyebilirsiniz tutmuş

Her neyse, burada benim iki sent:

<?php

function getLinkInfo($url)
{
    // Get target link html
    $html = file_get_contents($url);

    // Prepare the DOM document
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    $dom->preserveWhiteSpace = false; 

    // Get page title
    $titles = $dom->getElementsByTagname('title');
    foreach ($titles as $title) {
        $linkTitle = $title->nodeValue;
    }

    // Get META tags
    $metas = $dom->getElementsByTagname('meta'); 

    // We only need description
    foreach ($metas as $meta) {
        if ($meta->getAttribute("name") == "description") {
            $linkDesc = $meta->getAttribute("content");
        }
    }

    // Get all images
    $imgs = $dom->getElementsByTagname('img'); 

    // Again, we need the first one only
    foreach ($imgs as $img) {
        $firstImage = $img->getAttribute("src");

        if (strpos("http://", $firstImage) === false) {
            $firstImage = $url . $firstImage; 
        }

        break;
    }

    $output = <<<HTML

    <div class="info">

        <div class="image"><img src="{$firstImage}" alt="{$linkTitle}" /></div>
        <div class="desc">
            <div class="title">{$linkTitle}</div>
            <div class="subtitle">{$url}</div>
            <div class="summary">{$linkDesc}</div>
        </div>

    </div>

HTML;

    return $output;
}

echo getLinkInfo("http://www.phpfour.com/");

John Gruber a regex pattern o yardımcı olabilir vardır:

A common programming problem: identify the URLs in an arbitrary string of text, where by “arbitrary” let’s agree we mean something unstructured such as an email message or a tweet.