使用PHP将360浏览器导出数据转换为HTML书签文件

Oliver
Oliver
发布时间:2026-10-14 | 4人浏览过
原创

介绍如何使用PHP将360浏览器导出的书签数据(通常为JSON或需先转为JSON)转换为标准的HTML书签文件,以便在其他支持该格式的浏览器中使用。

操作目标与原理

360浏览器在导出数据时可能涉及内部数据库(如 favdb 对应的SQLite文件)或直接导出为JSON/HTML格式。本方法针对的是从中间数据源(如JSON)生成标准 Netscape 书签 HTML 文件的场景。生成的HTML遵循 Netscape 的 Bookmarks 文件格式规范,可直接被Chrome、Firefox等主流浏览器导入。

准备工作

  1. 确认数据格式:确保你拥有360浏览器导出的JSON数据文件(例如 tb_fav.json)。如果原始数据是SQLite数据库文件,通常需要先通过工具或脚本将其查询结果导出为JSON格式,因为纯文本脚本无法直接高效操作二进制SQLite数据库而不依赖扩展库。
  2. 环境要求:需要本地运行PHP环境(如 PHP CLI 模式、Apache 或 Nginx 配置了 PHP)。

具体操作步骤

第1步:创建PHP脚本

新建一个PHP文件(例如 convert_bookmarks.php),用于读取JSON数据并写入HTML文件。

第2步:解析输入数据

使用 file_get_contents 读取JSON文件,并通过 json_decode 将其解码为关联数组。假设JSON结构中,书签记录位于 RECORDS 键下。若结构不同,请根据实际JSON结构调整访问路径。

第3步:构建HTML头部

定义符合 Netscape 规范的文档头。包括声明类型、元字符集以及根节点 <DL>。

第4步:遍历并拼接书签条目

遍历每条书签记录,提取以下关键字段:

  • url: 链接地址
  • title: 书签标题
  • create_time: 创建时间戳(用于 ADD_DATE)
  • last_modify_time: 最后访问时间(用于 LAST_VISIT)

按照 Netscape 格式要求拼接 <A> 标签。注意:Netscape 格式中的日期通常为正整数秒级时间戳。如果原始数据是字符串或其他格式,可能需要额外转换逻辑(本代码假设已是兼容的时间戳或可转为整数的值)。

第5步:写入输出文件

使用 file_put_contents,先用 FILE_APPEND 追加内容。先写入头部,再循环追加每个书签项,最后写入尾部闭合标签。

完整代码示例

<?php
// 设置输出的文件名
$book_mark_name = 'book_mark.html';

// 读取输入的JSON数据文件
$content = file_get_contents('tb_fav.json');
if ($content === false) {
    die('无法读取JSON文件,请检查路径及权限。');
}

// 解析JSON,第二个参数为true以返回关联数组
$content_list = json_decode($content, true);
if ($content_list === null) {
    die('JSON解析失败,请检查JSON格式是否正确。');
}

// 假设书签记录在 RECORDS 键中,请根据实际JSON结构调整
$records = $content_list['RECORDS'] ?? [];
if (!is_array($records)) {
    die('未找到预期的书签数据结构。');
}

// 构建Netscape书签文件头部
$content_header = "<!DOCTYPE NETSCAPE-Bookmark-file-1>" .
                  "<!-- This is an automatically generated file.It will be read and overwritten.Do Not Edit! -->" .
                  "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">" .
                  "<TITLE>Bookmarks</TITLE>" .
                  "<H1>Bookmarks</H1>" .
                  "<DL><p>";

// 写入头部
file_put_contents($book_mark_name, $content_header);

// 遍历每条记录并写入书签项
foreach ($records as $item) {
    // 提取必要字段,确保存在防止报错
    $href      = $item['url'] ?? '';
    $title     = $item['title'] ?? ''; 
    $add_date  = isset($item['create_time']) ? (int)$item['create_time'] : time();
    $last_visit= isset($item['last_modify_time']) ? (int)$item['last_modify_time'] : time();
    $last_modified = $last_visit + 1;

    // 拼接单个书签的HTML代码
    $bookmark_html = "<DT><A HREF=\"" . htmlspecialchars($href) . "\" ADD_DATE=\"" . $add_date . "\" LAST_VISIT=\"" . $last_visit . "\" LAST_MODIFIED=\"" . $last_modified . "\" >" . htmlspecialchars($title) . "</A><br/>";
    
    // 追加写入文件
    file_put_contents($book_mark_name, $bookmark_html, FILE_APPEND);
}

// 写入文件尾部闭合标签
$content_tail = "</DL><p>";
file_put_contents($book_mark_name, $content_tail, FILE_APPEND);

echo '转换成功!已生成 ' . $book_mark_name;
?>

注意事项与排错

  • JSON结构差异:上述代码基于 $content_list['RECORDS'] 这一常见结构。如果你直接从360浏览器导出的JSON结构不同(例如直接在顶层或名为 data 的节点下),请修改 $records = ... 这一行的赋值逻辑。
  • 时间戳格式:Netscape 书签HTML要求日期为秒级整数时间戳。如果你的数据时间是毫秒级Unix时间戳,需要在写入前除以 1000。如果是其他格式(如 'Y-m-d' 字符串),需要使用 strtotime() 进行转换。
  • 特殊字符:代码中使用了 htmlspecialchars() 对 URL 和 Title 进行处理,以防止因包含 <, >, & 等字符导致HTML结构破坏或XSS风险。
  • 编码问题:确保保存生成的 book_mark.html 文件时使用 UTF-8 编码,且不要带有 BOM 头,否则部分浏览器可能显示乱码。

总结

通过简单的PHP脚本,可以灵活地将各种来源的书签数据转换为通用的 HTML 书签格式。这种方法不仅适用于360浏览器,也可经过调整后用于其他浏览器的导出格式迁移。以上就是使用PHP将360浏览器导出数据转换为HTML书签文件的详细内容,更多关于PHP处理HTML书签的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表