테스트 사이트 - 개발 중인 베타 버전입니다

사이트 정보(파비콘, 제목, 설명) 가져오는 함수

· 2년 전 · 1040

[code]

function fetchWebsiteMetadata($url) {

// "http://"가 생략된 경우 처리

if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {

$url = "http://" . $url;

}

 

$ch = curl_init();

 

// curl 옵션 설정

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_MAXREDIRS, 5);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

 

$html = curl_exec($ch);

 

// curl 실행 및 에러 처리

if (curl_errno($ch)) {

echo 'cURL error: ' . curl_error($ch);

curl_close($ch);

return false;

}

 

curl_close($ch);

 

// Simple HTML DOM Parser 로딩 - 이부분은 첨부파일 다운로드 후 각자 설정에 맞게 수정하세요.

include_once($_SERVER['DOCUMENT_ROOT']."/app/simplehtmldom/simple_html_dom.php");

 

// HTML 파싱

$dom = new simple_html_dom();

$dom->load($html);

 

// 파비콘 추출

$favicon = '';

$faviconElement = $dom->find('link[rel="icon"], link[rel="shortcut icon"]', 0);

if ($faviconElement) {

$favicon = $faviconElement->href;

 

// "http://" 또는 "https://"가 생략된 경우 처리

if (!parse_url($favicon, PHP_URL_SCHEME)) {

$favicon = rtrim($url, '/') . '/' . ltrim($favicon, '/');

}

} else {

// 파비콘이 없는 경우 메타 태그에서 이미지 추출

$imageElement = $dom->find('meta[property="og:image"], meta[name="twitter:image"], meta[itemprop="image"]', 0);

if ($imageElement) {

$favicon = $imageElement->content;

 

// "http://" 또는 "https://"가 생략된 경우 처리

if (!parse_url($favicon, PHP_URL_SCHEME)) {

$favicon = rtrim($url, '/') . '/' . ltrim($favicon, '/');

}

}

}

 

// 제목 추출

$title = '';

$titleElement = $dom->find('title', 0);

if ($titleElement) {

$title = $titleElement->plaintext;

}

 

// 설명 추출

$description = '';

$descriptionElement = $dom->find('meta[property="og:description"], meta[name="twitter:description"]', 0);

if ($descriptionElement) {

$description = $descriptionElement->content;

}

 

// 메모리 해제

$dom->clear();

unset($dom);

 

return [

'url' => $url,

'favicon' => $favicon,

'title' => $title,

'description' => $description

];

}

[/code]

 

플러터로 즐겨찾기 앱(웹)을 만들려고 준비한 건데

나름 잘 되는 거 같아서 올려봅니다 :)

 
 

 

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
17819
17818
17817
17816
17814
17811
17810
17809
17808
17803
17799
17798
17797
17795
17794
17793
JavaScript JSON Beautify
17790
17789
17786
17774
17760
17755
17750
17729
17722
17714
17708
17686
17676
17666