<?php
/**
* 動態版權聲明
* @param int $startYear 起始年份
* @param string $owner 版權持有者
* @param string $format 輸出格式:html|text|markdown
* @return string
*/
function copyright(int $startYear, string $owner, string $format = 'html'): string {
$currentYear = (int)date('Y');
$yearRange = $startYear < $currentYear ? "{$startYear}–{$currentYear}" : (string)$startYear;
return match($format) {
'html' => "© {$yearRange} {$owner}",
'text' => "Copyright {$yearRange} {$owner}",
'markdown' => "© {$yearRange} {$owner}",
default => "© {$yearRange} {$owner}",
};
}
// 使用範例
echo copyright(2018, 'MyCompany'); // © 2018–2024 MyCompany
echo copyright(2024, 'MyCompany'); // © 2024 MyCompany
echo copyright(2018, 'MyCompany', 'text'); // Copyright 2018–2024 MyCompany
?>
function copyrightAdvanced(
int $startYear,
string $owner,
array $options = []
): string {
$currentYear = (int)date('Y');
$yearRange = $startYear < $currentYear ? "{$startYear}–{$currentYear}" : (string)$startYear;
$defaults = [
'symbol' => '©', // 或 '(c)'
'template' => '{symbol} {years} {owner}',
'rights' => 'All rights reserved.',
'lang' => 'en',
];
$opts = array_merge($defaults, $options);
$output = strtr($opts['template'], [
'{symbol}' => $opts['symbol'],
'{years}' => $yearRange,
'{owner}' => $opts['owner'],
]);
if ($opts['rights']) {
$output .= ' ' . $opts['rights'];
}
return $output;
}
// 多語系範例
echo copyrightAdvanced(2018, 'MyCompany', [
'lang' => 'zh-TW',
'template' => '{symbol} {years} {owner} 版權所有',
'rights' => '保留所有權利。',
]); // © 2018–2024 MyCompany 版權所有 保留所有權利。
?>
// 純前端實作,適合靜態網站
document.addEventListener('DOMContentLoaded', () => {
const els = document.querySelectorAll('[data-copyright-start]');
const currentYear = new Date().getFullYear();
els.forEach(el => {
const start = parseInt(el.dataset.copyrightStart);
const owner = el.dataset.copyrightOwner || '';
const range = start < currentYear ? `${start}–${currentYear}` : start;
el.innerHTML = `© ${range} ${owner}`;
});
});
HTML 使用:
<span data-copyright-start="2018" data-copyright-owner="MyCompany"></span>
| 格式 | 範例 | 適用場景 |
|---|---|---|
| HTML 實體 | © 2018–2024 Company | 網頁、Email |
| 純文字 | Copyright 2018–2024 Company | CLI、Log、API 回應 |
| Markdown | © 2018–2024 Company | README、文件 |
| Unicode | © 2018–2024 Company | 現代瀏覽器、資料庫 |
動態版權年份是網站維護的小細節,一次設定永久生效。建議封裝為 Helper 函數或 Blade 元件 `