shaarli / netscape-bookmark-parser
通用的Netscape书签解析器
v4.0.0
2022-08-13 09:57 UTC
Requires
- php: >=7.1
- psr/log: ^1.1
Requires (Dev)
- phpunit/phpunit: ^7.0 || ^8.0 || ^9.0
- squizlabs/php_codesniffer: ^3.5
README
Shaarli Netscape Bookmarks 解析器
此库提供了解析Netscape书签(由常见的Web浏览器和书签服务导出)的解码器,以及能够将数据导出为书签格式的编码器。
🚀 安装
$ 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机器上,您需要首先安装cygwin或GnuWin 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社区"
如果您喜欢Shaarli Netscape 书签解析器,请给它加星或分享到推特。