shaarli/netscape-bookmark-parser

通用的Netscape书签解析器

v4.0.0 2022-08-13 09:57 UTC

README

GH release GH license GH stars Build Status

Shaarli Netscape Bookmarks 解析器

此库提供了解析Netscape书签(由常见的Web浏览器和书签服务导出)的解码器,以及能够将数据导出为书签格式的编码器。

🚀 安装

使用Composer ()

$ composer require shaarli/netscape-bookmark-parser

🔥 使用方法

从书签文件导入

<?php
// parse.php
require_once 'vendor/autoload.php';

use Shaarli\NetscapeBookmarkParser\NetscapeBookmarkParser;

$parser = new NetscapeBookmarkParser();
$bookmarks = $parser->parseFile('./tests/Fixtures/Encoder/input/netscape_basic.htm');
var_dump($bookmarks);

上面的例子将返回以下数组

array(2) {
  [0] => array(7) {
    ["name"] => string(12) "Secret stuff"
    ["image"] => NULL
    ["url"] => string(19) "https://private.tld"
    ["tags"] => array(2) {
      [0] => string(7) "private"
      [1] => string(6) "secret"
    }
    ["description"] => string(52) "Super-secret stuff you're not supposed to know about"
    ["dateCreated"] => int(971175336)
    ["public"] => bool(false)
  }
  [1] => array(7) {
    ["name"] => string(12) "Public stuff"
    ["image"] => NULL
    ["url"] => string(17) "http://public.tld"
    ["tags"] => array(3) {
      [0] => string(6) "public"
      [1] => string(5) "hello"
      [2] => string(5) "world"
    }
    ["description"] => NULL
    ["dateCreated"] => int(1456433748)
    ["public"] => bool(true)
  }
}

导出到文件

<?php
// export.php
require_once 'vendor/autoload.php';

use Shaarli\NetscapeBookmarkParser\NetscapeBookmarkParser;

$data = [
    [
        'name'        => 'shaarli/Shaarli',
        'url'         => 'https://github.com/shaarli/Shaarli',
        'image'       => 'data:image/png;base64, ...'
        'description' => 'The personal, minimalist, super-fast, database free, bookmarking service',
        'public'      => true,
        'tags'        => ['shaarli'],
    ],
    [
        'name'         => 'shaarli/netscape-bookmark-parser',
        'url'          => 'https://github.com/shaarli/netscape-bookmark-parser',
        'public'       => false,
        'dateCreated'  => '1612572000',
        'dateModified' => '1612572000',
        'tags'         => ['shaarli'],
    ],
];

$parser = new NetscapeBookmarkParser();

$parser->export($data, './export.htm');

上面的例子将以下字符串写入文件

<!DOCTYPE NETSCAPE-Bookmark-file-1>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><H3>shaarli</H3>
<DL><p>
<DT><A HREF="https://github.com/shaarli/Shaarli" PRIVATE="0" ICON="data:image/png;base64, ...">shaarli/Shaarli</A>
<DD>The personal, minimalist, super-fast, database free, bookmarking service
<DT><A HREF="https://github.com/shaarli/netscape-bookmark-parser"> ADD_DATE="1612572000" LAST_MODIFIED="1612572000">shaarli/netscape-bookmark-parser</A>
<\DL><p>
<\DL><p>

💻 依赖项

Shaarli Netscape Bookmarks 解析器需要以下依赖项

  • PHP
  • Composer
  • Make(可选)

🐘 PHP

如何从官方文档中安装PHP,请在此处查看这里

📦 Composer

如何从官方文档中安装Composer,请在此处查看这里

🛠 Make

🐧 在Linux上安装Make

在Linux机器上输入以下命令

$ sudo apt-get install --assume-yes make

🏁 在Windows上安装Make

在Windows机器上,您需要首先安装cygwinGnuWin make以执行make脚本。

🍎 在OSX上安装Make

Make应默认可在OSX系统上使用,但您可以使用以下命令升级make版本

$ brew install make

📑 关于

⚡ 来自Kafene的一句话

开发此解析器的动机如下

  • Netscape格式具有一个非常宽松的规范:没有DTD也没有XSL样式表来约束数据的格式。
  • 软件和Web服务使用各种不同的属性名称和值来导出书签。
  • 因此,使用标准SAX或DOM解析器并不直接。

工作原理

  • 输入的书签文件被修剪和清理以提高解析结果
  • 然后使用PCRE模式来解析与最可能的属性名称和值相对应的数据
    • 属性名称:`description`与`note`,`tags`与`labels`,`date`与`time`等。
    • 数据格式:`comma,separated,tags`与`space separated labels`,UNIX时间戳与可读日期,换行符与回车符等。
  • 返回一个包含所有成功解析的链接及其属性的关联数组

⚡ Shaarli社区分支

这个友好的分支由Shaarli社区维护,在https://github.com/shaarli/netscape-bookmark-parser,并被开源Shaarli书签服务使用。这是由Kafene发起的原始netscape-bookmark-parser项目的社区分支。

🤝 贡献

感谢您对Shaarli Netscape 书签解析器的贡献兴趣。

在开始工作任何功能之前,请先查看行为准则贡献指南

如果您想提出一个问题,请首先检查是否已经报告过,然后再创建一个新问题。

📜 许可证

版权所有 (c) 2021 "Shaarli社区"

License MIT许可证下分发。

如果您喜欢Shaarli Netscape 书签解析器,请给它加星或分享到推特。

GitHub stars Twitter

🙏 致谢