algolia/php-dom-parser

将 DOM 转换为 Algolia 搜索友好的记录对象的一个简单工具。

0.7.0 2023-04-13 13:53 UTC

This package is not auto-updated.

Last update: 2024-09-12 20:24:15 UTC


README

Build Status

将 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 以确保代码风格保持一致。