2012-07-30 3 views
6

나는 this question을 보았지만, 내가 찾고있는 것을 정말로 만족시키지 못한다. 그 질문의 대답은 메타 설명 태그에서 들어 올린 것이고, 두 번째는 이미 시체를 가지고있는 기사의 발췌 부분을 생성하는 것입니다.PHP 문지기 기사 가독성과 같은 발췌문

내가하고 싶은 것은 실제로 가독성과 마찬가지로 문서의 처음 몇 문장을 얻는 것입니다. 이것에 가장 좋은 방법은 없을까요? HTML 구문 분석? 여기에 제가 현재 사용하고있는 것이 있습니다 만, 이것은별로 신뢰할만한 것이 아닙니다.

function guessExcerpt($url) { 
    $html = file_get_contents_curl($url); 

    $doc = new DOMDocument(); 
    @$doc->loadHTML($html); 

    $metas = $doc->getElementsByTagName('meta'); 

    for ($i = 0; $i < $metas->length; $i++) 
    { 
     $meta = $metas->item($i); 
     if($meta->getAttribute('name') == 'description') 
      $description = $meta->getAttribute('content'); 

    } 

    return $description; 
} 

function file_get_contents_curl($url) { 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

    $data = curl_exec($ch); 
    curl_close($ch); 

    return $data; 
} 
+0

[php-readability] (http://code.fivefilters.org/phpreadability/) – j0k

답변

8

다음은 PHP의 가독성 포트입니다 (https://github.com/feelinglucky/php-readability). 그냥 시도 해 봐. 추출 결과는 가독성과 유사합니다 (가독성 알고리즘을 구현하므로).

require 'lib/Readability.inc.php'; 

$html = file_get_contents_curl($url); 

$Readability  = new Readability($html, $html_input_charset); // default charset is utf-8 
$ReadabilityData = $Readability->getContent(); 

$title = $ReadabilityData['title']; 
$content = $ReadabilityData['content']; 

그런 다음 $content의 일부 문장을 발췌문으로 사용할 수 있습니다.

+1

도 볼 수 있습니다. 누구나 relavant thumbnail/image도 긁는 방법을 알고 있습니까? 가독성은 내가 찾고있는 것과 정확히 일치합니다. – Swivel

+1

@Swivelgames 미리보기 이미지를 가져 오는 방법을 찾았습니까? 비슷한 것을하고 싶습니다. – hellomello

+2

@andrewliu 제가 썸네일을 얻는데 사용한 방법은 약간 더 많은 코드입니다. 나는'/ /i'와 함께'preg_match_all'을 사용하고 모든 이미지를 가진 배열을 만들었습니다. 위의 예제에서'$ url'을 파싱함으로써, 나는 baseurl을 결정함으로써 상대 이미지 경로를 절대 경로로 바꿀 수있었습니다. 그런 다음 사용자가 선택할 수있는 절대 이미지 경로가있는 배열을 제시합니다. 간단한 스크립트를 사용하여 섬네일을 만들고 웹 서버에 저장하여 사용자에게 표시하거나 HTML을 사용하여 비율을 조정할 수 있습니다. ** 새로운 질문을 게시하고 여기에 링크를 붙여 넣으면 특정 코드를 제공 할 수 있습니다. ** – Swivel

관련 문제