algolia / php-dom-parser
将 DOM 转换为 Algolia 搜索友好的记录对象的一个简单工具。
0.7.0
2023-04-13 13:53 UTC
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: >=5.0.10
- yoast/phpunit-polyfills: ^1.0
This package is not auto-updated.
Last update: 2024-09-12 20:24:15 UTC
README
将 DOM 转换为 Algolia 搜索友好的记录对象的一个简单工具。
该工具最初是为了构建 WordPress 文章索引而设计的,但现在足够抽象,可以用于其他类型的项目。
目前,解析后的 DOM 将产生尽可能少的记录,这意味着如果一个节点至少有一个子节点,它将不会单独有记录。如果需要这种行为,我们很容易添加它。
需求
此库需要启用 mbstring
PHP 扩展。同时请确保 mbregex
未禁用。
安装
$ composer require algolia/php-dom-parser
示例
简单用法
以下是一个简单示例,我们从 Algolia 博客的文章内容中获取内容并将其解析以获取记录。
$article = file_get_contents('https://blog.algolia.com/how-we-re-invented-our-office-space-in-paris/'); $parser = new \Algolia\DOMParser(); // Exclude content by CSS selectors. $parser->setExcludeSelectors(array( 'pre', '.entry-meta', 'div.rp4wp-related-posts' )); // Only parse what is inside a given CSS selectors. // If there are multiple nodes matching, they will all be parsed. $parser->setRootSelector('article.post'); // Define your attributes sibling. $parser->setAttributeSelectors( array( 'title1' => 'h1', 'title2' => 'h2', 'title3' => 'h3', 'title4' => 'h4', 'title5' => 'h5', 'title6' => 'h6', 'content' => 'p, ul, ol, dl, table', ) ); // Add some attributes that will be part of every record. $parser->setSharedAttributes(array( 'url' => 'http://www.example.com', 'visits' => 1933, )); // Turn the DOM into Algolia search friendly records. $records = $parser->parse($article); var_dump($records);
在 examples 文件夹中您可以找到一些脚本/输出示例,这样您无需运行任何东西即可提供反馈。
小 CLI
dynamic.php
是一个用于动态获取某些 URL 的 DOM 的小 CLI。您可以可选地传递一个根选择器作为第二个参数。
此脚本主要在早期阶段用于测试,目前我们没有打算进一步开发。
$ php examples/dynamic.php https://blog.algolia.com/inside-the-algolia-engine-part-2-the-indexing-challenge-of-instant-search/ article.post
开发
测试代码。
vendor/bin/phpunit
贡献
请贡献
- 如果您有想法、问题或只是想打招呼:创建一个问题
- 如果您有错误修复:创建一个 PR
请确保测试通过,并请运行 php-cs-fixer 以确保代码风格保持一致。