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

PHP 將 360 瀏覽器 favdb SQLite 轉為 HTML 書籤檔

     編輯:PHP 綜合知識

360 瀏覽器匯出的書籤資料庫(`favdb`)實為 SQLite 格式,本文提供 PHP 腳本將其解析並轉換為標準 Netscape 書籤 HTML 格式(`bookmark.html`),方便匯入其他瀏覽器。

轉換流程說明

  1. 讀取匯出的 JSON 檔案(`tb_fav.json`),實際上 360 瀏覽器較新版本匯出直接為 JSON。
  2. 解析 JSON 結構,提取 `RECORDS` 陣列中的書籤資料(標題、網址、建立時間、最後修改時間)。
  3. 依 Netscape 書籤格式規範輸出 HTML 標頭、書籤項目(`
    `)與結尾。
  4. 使用 `FILE_APPEND` 逐行寫入檔案,避免大量資料佔用記憶體。

完整 PHP 程式碼

<?php
$bookmark_file = 'book_mark.html';
$json_file     = 'tb_fav.json';

// 1. 讀取並解碼 JSON
$content = file_get_contents($json_file);
if ($content === false) {
    die("無法讀取 $json_file");
}
$data = json_decode($content, true);
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON 解析失敗: " . json_last_error_msg());
}
$records = $data['RECORDS'] ?? [];

// 2. 輸出 HTML 標頭
$header = "<!DOCTYPE NETSCAPE-Bookmark-file-1>\n"
        . "<!-- This is an automatically generated file. It will be read and overwritten. Do Not Edit! -->\n"
        . "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">\n"
        . "<TITLE>Bookmarks</TITLE>\n"
        . "<H1>Bookmarks</H1>\n"
        . "<DL><p>\n";
file_put_contents($bookmark_file, $header);

// 3. 逐筆寫入書籤項目
foreach ($records as $item) {
    $href       = htmlspecialchars($item['url'] ?? '', ENT_QUOTES, 'UTF-8');
    $add_date   = $item['create_time'] ?? time();
    $last_visit = $item['last_modify_time'] ?? time();
    $last_mod   = $last_visit + 1;
    $title      = htmlspecialchars($item['title'] ?? 'Untitled', ENT_QUOTES, 'UTF-8');

    $line = "<DT><A HREF=\"$href\" ADD_DATE=\"$add_date\" LAST_VISIT=\"$last_visit\" LAST_MODIFIED=\"$last_mod\">$title</A><br/>\n";
    file_put_contents($bookmark_file, $line, FILE_APPEND);
}

// 4. 輸出結尾
$tail = "</DL><p>\n";
file_put_contents($bookmark_file, $tail, FILE_APPEND);

echo "成功產生 $bookmark_file";
?>

注意事項與改進建議

  • 原始碼修正:原文 `json_decode($content,'utf-8')` 第二參數錯誤,正確為 `json_decode($content, true)` 取得關聯陣列。
  • XSS 防護:輸出 HTML 時務必使用 `htmlspecialchars` 轉義標題與網址,防止惡意腳本注入。
  • 時間格式:`ADD_DATE` 等屬性需為 Unix 時間戳(秒),若來源為毫秒需除以 1000。
  • 大量資料效能:若書籤超過數萬筆,建議改用 `fopen`/`fwrite`/`fclose` 流式寫入,或分批處理。
  • 資料夾結構:若需保留書籤資料夾階層,需解析 `parent_id` 等欄位並輸出巢狀 `
    ` 結構。

執行腳本後產生的 `book_mark.html` 可直接在 Chrome、Firefox、Edge 等瀏覽器匯入書籤功能中使用。

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