사이트 정보(파비콘, 제목, 설명) 가져오는 함수
[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]
플러터로 즐겨찾기 앱(웹)을 만들려고 준비한 건데
나름 잘 되는 거 같아서 올려봅니다 :)
게시판 목록
개발자팁
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 5036 | 웹서버 | 4년 전 | 2138 | ||
| 5035 | 웹서버 | 4년 전 | 2165 | ||
| 5034 | 웹서버 | 4년 전 | 2397 | ||
| 5033 | 웹서버 | 4년 전 | 1776 | ||
| 5032 | 웹서버 | 4년 전 | 2132 | ||
| 5031 | 웹서버 | 4년 전 | 2511 | ||
| 5030 | MySQL | 4년 전 | 2881 | ||
| 5029 | 웹서버 | 4년 전 | 7176 | ||
| 5028 | 웹서버 |
kerimdoor
|
4년 전 | 1629 | |
| 5027 | OS | 4년 전 | 6551 | ||
| 5026 | PHP |
|
4년 전 | 4638 | |
| 5025 | JavaScript |
|
4년 전 | 2402 | |
| 5024 | MySQL |
|
4년 전 | 3811 | |
| 5023 | MySQL | 4년 전 | 3027 | ||
| 5022 | PHP | 4년 전 | 2321 | ||
| 5021 | PHP |
|
4년 전 | 3247 | |
| 5020 | PHP | 4년 전 | 4301 | ||
| 5019 | PHP | 5년 전 | 4324 | ||
| 5018 | 웹서버 | 5년 전 | 6701 | ||
| 5017 | 기타 |
HappyTank
|
5년 전 | 5068 | |
| 5016 | MySQL | 5년 전 | 3085 | ||
| 5015 | 기타 | 5년 전 | 2269 | ||
| 5014 | 기타 | 5년 전 | 2832 | ||
| 5013 | 기타 | 5년 전 | 2252 | ||
| 5012 | 기타 | 5년 전 | 2259 | ||
| 5011 | 기타 | 5년 전 | 2212 | ||
| 5010 | 기타 | 5년 전 | 1771 | ||
| 5009 | 기타 | 5년 전 | 2379 | ||
| 5008 | 기타 | 5년 전 | 2008 | ||
| 5007 | 기타 | 5년 전 | 1971 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기