2009-12-08 2 views
2

링크를 게시 할 때 페이스 북과 같은 정보를 "파싱"하는 라이브러리를 작성하려고합니다. 그러나 내가 바퀴를 재발 명하고 싶지 않기 때문에 누구든지 도서관을 알고 있습니까? 그리고 이것을 이미하는 도서관을 작성하려는 노력은 이미 있습니까?페이스 북의 "링크 감지"를 에뮬레이트하는 라이브러리가 있습니까?

페이스 북을 사용하지 않는다면 내가 의미하는 바를 이해할 수 있도록 예제를 포함 시켰습니다. http://lh4.ggpht.com/_zbED-KN_ZAI/Sx6LuDmZkVI/AAAAAAAADLs/mN7eFnzL1gE/s144/example.png

답변

6

라이브러리를 보지 못했지만 매우 간단합니다. 나는 당신을 도울 수있는 빠른 기능을 적어 두었습니다.

<?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/"); 
+0

감사합니다. 이제 코드를 ASP에서 코딩하는 방법을 알아 봅니다. – edude05

1

존 그루버 (John Gruber)가 도움이 될 수 a regex pattern을 가지고 : 나는 등

어쨌든, 여기 내 두 센트, 간단, 당신은 몇 가지 오류 처리, 컨텐츠를 취득 넣어 컬을 사용할 수 있습니다 지켰다 :

일반적인 프로그래밍 문제 : 에 의해 의 우리 말에 동의 "임의의"할 텍스트의 임의의 문자열에 URL을 식별 뭔가 구조화 등의 전각으로 메시지 또는 짹짹.