undercoder/magenizer

在字符串上实现迭代器接口,通过一个标记数组提取数据。这个名字来源于Mage和tokenizer :)

v0.1.9 2020-01-04 00:27 UTC

This package is auto-updated.

Last update: 2024-09-04 11:19:33 UTC


README

在字符串上实现迭代器接口,通过一个标记数组提取数据。这个名字来源于Mage和tokenizer :)

给定一个标记数组,让我们遍历字符串,每次返回对应标记之间的数据。

例:

$raw = <<<RAW
STRANGE Document With Weird LAYOUT
THIS document is ELECTRONIC
ANDRES REYES
N°3
WORK AT: HEROICAL SERVICES FOR FREE,
ADDRESS  :  666, Where The Braves Dies Street, Santiago, Chile.
...Some more of weird strings...
RAW;
$tokens = array(
  "name"        => array("from" => "ELECTRONIC",   "to" => "N\s*\°"),
  "doc-number"  => array("from" => "N\s*\°",       "to" => "WORK"),
  "job"         => array("from" => "K AT\:",       "to" => ",\nADDRESS"),
  "address"     => array("from" => "ADDRESS\s*\:", "to" => "\...Some")
);

$mage = new Magenizer($raw, $tokens);
foreach ($m as $next) {
  echo "$next </br>";
}

//OUTPUT:
//------
//ANDRES REYES
//3
// HEROICAL SERVICES FOR FREE
// 666, Where The Braves Dies Street, Santiago, Chile.

如你所见,示例中支持regexr,但没有使用分隔符/,因为它们是内部添加的。

@作者 Andrés Reyes

简短故事

当我在工作中需要从pdftotext的输出中提取数据时,我写了这个类。这个输出非常不规则,其布局在不同情况下有所不同,所以我将数据视为由起始标记和结束标记包围的目标。例如(尖括号<>>仅用于示例):<name> Ermistuligius Of Bermelloauis <number> 12 <heigth> 145 ..等等...因此,我可以通过指向标记之间的字符串来获取数据。当时,我正在学习设计模式,所以我使用迭代器模式实现了这个解决方案。

免责声明

  • 我是一个新手程序员,所以总是欢迎反馈。
  • 一些同事要求我将这个项目提交到Packagist。
  • 我是一个西班牙语母语者。