dynoser/pricefinder

搜索字符串中类似于价格的价值,并返回这些值的数组

dev-main 2023-12-07 13:33 UTC

This package is auto-updated.

Last update: 2024-09-07 15:07:48 UTC


README

概述

PriceFinder 是一个PHP类,用于检测和分析文本字符串中的价格信息。它特别适用于处理多货币数据,支持广泛的全球货币和加密货币。

功能

  • 货币支持: 该类可以识别和操作各种货币,包括主要货币如美元(USD)、欧元(EUR)和英镑(GBP),以及流行的加密货币如比特币(BTC)、以太坊(ETH)和狗狗币(DOGE)。
  • 灵活的文本分析: 它可以在文本字符串中找到价格,即使它们以不同的格式呈现或被不同类型的文本包围。
  • 可自定义的前缀和后缀: 用户可以定义自己的前缀和后缀来检测价格,除了提供的默认值。
  • 多语言支持: 该类可以识别多种语言中的价格前缀,提高了其在国际环境中的可用性。

工作原理

  1. 初始化: 构造函数初始化货币代码和符号,以及用于价格检测的默认和可自定义的前缀和后缀。
  2. 价格检测: findPrices 方法扫描给定的文本字符串中的价格相关模式,包括货币符号和数值。
  3. 货币识别: 通过分析文本中使用的货币前缀、后缀和实际符号来确定货币。
  4. 结果汇总: 方法返回一个包含详细信息的检测到的价格数组,如完整匹配的字符串、数值和识别的货币。

使用示例

$priceFinder = new dynoser\textworks\PriceFinder();
$pricesArr = $priceFinder->findPrices("The price is $100 or €85.33, or 8,000 рублей");
print_r($pricesArr);
// This will return an array with details of the detected prices in USD and EUR:
Array
(
    [0] => Array
        (
            [full_match] => $100 or
            [digits] => 100
            [currency] => USD
            [match_position] => 13
        )

    [1] => Array
        (
            [full_match] => €85.33
            [digits] => 85.33
            [currency] => EUR
            [match_position] => 21
        )

    [2] => Array
        (
            [full_match] => 8,000 рублей
            [digits] => 8000
            [currency] => RUB
            [match_position] => 33
        )
)

定制

  • 添加自定义前缀/后缀: 用户可以通过将它们作为数组传递给构造函数或使用 setPrefixessetSuffixes 方法来添加自己的前缀或后缀。
  • 支持更多货币: 可以通过更新 $currenciesArr 数组来扩展类以支持更多货币。

限制

  • 语言依赖性: 虽然该类支持多种语言,但在特定语言环境中可能需要定制以实现最佳性能。
  • 复杂格式: 非常复杂或不规则的货币格式可能无法准确检测。

结论

PriceFinder 类是一个检测和分析文本中价格的通用工具,支持广泛的货币和语言。它高度可定制,适用于需要从文本中提取价格数据的各种应用。