首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 動態產生版權年份區間:自動更新、多格式支援

     編輯:PHP 綜合知識

單行函數實作

<?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 版權所有 保留所有權利。
?>

前端 JavaScript 版(無需 PHP)

// 純前端實作,適合靜態網站
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 CompanyCLI、Log、API 回應
Markdown© 2018–2024 CompanyREADME、文件
Unicode© 2018–2024 Company現代瀏覽器、資料庫

結語

動態版權年份是網站維護的小細節,一次設定永久生效。建議封裝為 Helper 函數或 Blade 元件 ``,全站統一管理,避免年份過期顯示不專業。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved