ruslanovich111 / date-converter
本包最新版本(1.1.1)没有提供许可证信息。
转换日期
1.1.1
2022-11-08 06:05 UTC
Requires
- php: ^8.0
- ext-mbstring: *
This package is not auto-updated.
Last update: 2024-09-24 15:07:03 UTC
README
该库为处理日期提供了扩展功能。
- 将日期行 "The 13th of Mar. 1999", "Mar. 2022" 转换为对象。
- 将不同语言中的日期行 "8 März 2023" 转换。
- 将日期区间 "13th of Mar. 1999 - 8 März 2023" 转换。
- 将日期序列 "The 12th of April 2022; 8 März 2023" 转换。
- 在您的语言文本中搜索日期...
该库解决了所有这些问题。
版本
- 主分支(标签 1.0.*)中有 php8.1 的代码。
- 主分支 php8.0(标签 1.1.*)中有 php8.0 的代码。
配置
创建 ArrayPatternStorage。
该对象接受严格定义格式的配置数组
patterns字段应包含日期的正则表达式。months字段应包含月份的正则表达式。应有正好12个。
<?php
$patternStorage = new ArrayPatternStorage([
'patterns' => [
'($day)th ($month) ($year)',
'The ($day)th of ($month) ($year)',
],
'months' => [
1 => ["January", "Jan\."],
2 => ["February", "Febr\."],
3 => ["March", "Mar\."],
4 => ["April"],
5 => ["May"],
6 => ["June"],
7 => ["July"],
8 => ["August"],
9 => ["September"],
10 => ["October"],
11 => ["November"],
12 => ["December"]
],
]);
该库自动替换正则表达式:$day = [0-9]{1,2},$year = [0-9]{4},$month = January|Jan\.|February|...。
转换
所有使用该库的示例都在 examples 文件夹中。
例如,在 ./examples/simple_date/test.php 中描述了简单的转换
/** $patternStorage defined above */
$patternStorage = ...
$converter = new RowToModelConverter($patternStorage);
$converter->convertToDate("12th February 2022");
convertToDate 方法将返回一个 DateModel 对象,因为字符串 "12th February 2022" 与配置文件中的第一个模式匹配。
如果您传递一个不匹配任何模式的字符串,则将抛出异常。
配置中模式的顺序很重要,因为 convertToDate 方法根据第一个匹配的模式返回一个 DateModel 对象!
高级选项
区间转换:interval-convertation
序列转换:secuence-convertation
多个模式存储:multiple-storages
搜索
该库提供了两种搜索策略
- 替换搜索
- 重复搜索
使用搜索的示例在 examples/search 文件夹中描述。接下来,我们将解释它们的区别。
给定输入行
2022年4月12日、4月13日和2021年4月17日天气晴朗
替换搜索
- 找到与输入对应的第一个模式的所有日期,替换为 $pattern_1,保存转换后的行
天气晴朗在外 $pattern_1、4月13日和 $pattern_1.
模式1的日期存储在 TextAllPatternMatches 模型中。 - 在转换后的行(用 $pattern_1)中找到模式2的日期,替换为 $pattern_2,保存转换后的行
天气晴朗在外 $pattern_1、$pattern_2 和 $pattern_1.
模式2的日期存储在 TextAllPatternMatches 模型中。 - 等等...
对于此策略,配置中模式的顺序很重要!
重复搜索
- 找到与输入对应的第一个模式的所有日期,替换为 $pattern_1,保存转换后的行
天气晴朗在外 $pattern_1、4月13日和 $pattern_1.
模式1的日期存储在TextPattern模型中。 - 再次,我们取输入行,找到与模式2对应的日期,将其替换为$pattern_2,保存字符串
2022年4月12日那天天气晴朗,$pattern_2和2021年4月17日,
模式2的日期存储在TextPattern模型中。 - 等等...
因此,TextPatternSequence被填充了TextPattern模型。在这个策略中,顺序不重要。
高级选项
区间搜索: interval-search