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

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

· 2년 전 · 1033

[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]

 

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

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

 
 

 

 

댓글 작성

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

로그인하기

게시글 목록

번호 제목
17443
17442
17441
17440
17438
17436
17435
17433
17432
17430
17426
17416
17413
17401
17391
17379
17375
17374
17362
17350
17348
17341
17339
17335
17334
17333
17332
17331
17330
17329