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

· 2년 전 · 1412

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

 

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

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

 
 

 

 

첨부파일

simple_html_dom.php (57.9 KB) 8회 2023-05-19 10:13
|
댓글을 작성하시려면 로그인이 필요합니다.

개발자팁

개발과 관련된 유용한 정보를 공유하세요. 질문은 QA에서 해주시기 바랍니다.

+
분류 제목 글쓴이 날짜 조회
PHP 2년 전 조회 858
PHP 2년 전 조회 1,148
PHP 2년 전 조회 1,110
기타 2년 전 조회 1,399
2년 전 조회 902
기타 2년 전 조회 1,901
PHP 2년 전 조회 1,168
JavaScript 2년 전 조회 1,908
PHP 2년 전 조회 1,556
2년 전 조회 830
기타 2년 전 조회 1,204
PHP 2년 전 조회 1,331
PHP 2년 전 조회 1,626
기타 2년 전 조회 1,943
PHP 2년 전 조회 1,413
PHP 2년 전 조회 1,568
PHP 2년 전 조회 1,559
JavaScript 2년 전 조회 1,326
MySQL 2년 전 조회 1,542
MySQL 3년 전 조회 1,614
PHP 3년 전 조회 1,850
OS 3년 전 조회 1,153
웹서버 3년 전 조회 1,300
웹서버 3년 전 조회 1,413
PHP 3년 전 조회 1,217
PHP 3년 전 조회 1,275
PHP 3년 전 조회 1,281
PHP 3년 전 조회 1,238
PHP 3년 전 조회 1,250
JavaScript 3년 전 조회 1,210