undercoder / magenizer
在字符串上实现迭代器接口,通过一个标记数组提取数据。这个名字来源于Mage和tokenizer :)
v0.1.9
2020-01-04 00:27 UTC
Requires
- php: >=5.6.11
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。
- 我是一个西班牙语母语者。