2009-09-05 5 views
0

사용자가 웹 페이지에 대한 링크를 제공하고 해당 웹 페이지의 내용을 가져와 내용을 기반으로 내용을 구문 분석하는 PHP 스크립트를 만들려고합니다. 사용자가 YouTube 링크 제공하는 경우PHP file_get_contents

예를 들어, (? 썸네일, 소스 코드) 다음

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

를, 그것은

그 비디오에 대한 기본 정보를 사로 잡고 또는 그들은 비 메오를 제공 할 수 있습니다 링크 :

:

http://www.vimeo.com/xxxxxx 

아니면 같은, 첨부 된 비디오없이, 어떤 링크를 제공하더라도

http://www.google.com/ 

페이지 제목이나 일부 메타 콘텐츠 만 가져올 수 있습니다.

필자는 file_get_contents를 사용해야 할 것이라고 생각하지만,이 컨텍스트에서 사용하는 방법을 정확하게 모르겠습니다.

나는 전체 코드를 작성하는 사람을 찾고 있지 않지만, 아마도 이것을 달성 할 수있는 도구를 제공 할 것입니다.

+3

시도를 PHP를 사용하는 youtube에서 "사람들의 반응을 좋게 만듭니다. –

답변

3

curl 또는 http 라이브러리를 사용할 수 있습니다. http 요청을 보내고 라이브러리를 사용하여 http 응답에서 정보를 얻을 수 있습니다.

+0

또한 정규 표현식을 사용하여 해당 웹 사이트에서 원하는 정보를 파싱 할 수 있습니다. – yoda

0

Thumbshots 또는 Snap에 이미 원하는 기능이 있습니까?

나는 그것이 당신이 찾고있는 정확히는 아니지만, 적어도 손쉽게 잡을 수있는 것들에 대해서는 알고 있습니다. 또한 txwikinger는 이미 다른 질문에 답변했습니다. 하지만 어쩌면 그게 어쨌든 ypu 도움이됩니다.

1

file_get_contents()이 경우 php.ini에서 allow_fopen_urltrue으로 설정되었다고 가정하면이 경우 작동합니다. 말했다

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

, file_get_contents() 오류가 실패에서 성공에 대한 내용이나 false를 수신하는 다른 처리 방법으로 당신에게 많은 것을 제공하지 않습니다 : 당신이 할 것입니다 것은 같은 것이있다. 요청에 대한보다 많은 제어권을 갖고 HTTP 응답 코드에 액세스하려는 경우 curl 기능과 특히 curl_get_info을 사용하여 응답 코드, MIME 유형, 인코딩 등을 확인하십시오. curl 또는 file_get_contents() 관심있는 HTML을 찾기 위해 구문 분석하는 코드는 동일합니다.

+0

HTTP 래퍼 (URL 열기)를 사용하여 file_get_contents를 호출하면 $ http_response_header 변수에 응답 헤더가 채워집니다 – Greg

2

나는이 질문이 꽤 오래되었다는 것을 알고 있지만 누군가가 똑같은 것을 찾는다면 그것을 대답 할 것이다.

YouTube, Vimeo, Wordpress, Slideshare, Hulu, Flickr 및 기타 다양한 서비스에 oEmbed (http://oembed.com/)를 사용하십시오. 당신이 더 정확한 확인하려면 목록에없는 경우 또는, 당신은이를 사용할 수 있습니다

http://simplehtmldom.sourceforge.net/

그것은 PHP를위한 jQuery를 일종의, 당신은 코드의 부분을 얻기 위해 HTML 선택기를 사용하여 의미 (즉, : 모든 이미지, div의 내용을 가져오고, 텍스트 만 (HTML이 없음) 노드의 내용 등을 반환합니다.

당신은이 같은 (더 우아하게 수행하지만, 이것은 단지 예입니다 수 있습니다) 할 수있는 : 어떻게 영화의 축소판을 어떻게해야합니까 "와 같은 좀 더 정직하고 질문을

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); 
}