그누보드에서 스마트에디터/ckeditor 에 링크를 입력할 경우 target 값 없이 입력이 될 경우
HTML을 파싱하여 href 속성이 있는 경우 등록된 본문 내용이 허용된 도메인과 다를 경우 target 속성 추가
<?php
$allow_domain = "https://mydomain.com";
$_POST['content'] = '<a href="https://blog.naver.com/">네이버 블로그 링크</a>';
$content = target_link($_POST['content']);
//결과
//<a href="https://blog.naver.com/ tatget="_blank">네이버 블로그 링크</a>
function target_link($content)
{
// HTML을 파싱하여 href 속성이 있는 경우 target 속성 추가
$dom = new DOMDocument();
$content = mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8');
$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$links = $dom->getElementsByTagName('a');
foreach ($links as $link) {
$href = $link->getAttribute('href');
// href 속성이 있는 경우
if (!empty($href)) {
$parsedUrl = parse_url($href);
// 도메인이 허용된 도메인과 다를 경우 target 속성 추가
if (isset($parsedUrl['host']) && $parsedUrl['host'] !== $allow_domain) {
$link->setAttribute('target', '_blank');
}
}
}
return $dom->saveHTML();
}
?>
'Web > PHP' 카테고리의 다른 글
CKEditor5 클립보드 이미지 업로드 하는 방법(Paste, Ctrl+v) (0) | 2024.03.07 |
---|---|
PHP) 주어진 시작일자와 종료일자 사이의 남은 일 수를 계산하는 방법 (0) | 2024.02.02 |
PHP] 사이트맵(sitemap.xml) 생성하는 소스 (0) | 2021.12.02 |
PHP] 네이버맵 API를 이용한 좌표로 주소구하기 (0) | 2021.11.05 |
PHP] map 폴리곤(Polygon) 영역의 중심 좌표 구하기 (0) | 2021.11.05 |