首页 > 解决方案 > 分解从登机牌扫描的字符串

问题描述

这是我通过扫描登机牌得到的字符串。

M1BEAVER/ALEXANDERMR EMGWEQE LHRCPHBA 0816 142M019D0014 13B>30B1WM8141BBA 29 BA 15700353 8

我尝试寻找不同的解决方案,但我一直在看到一些 python 和 java 登机牌解析器,这不是我特别擅长的语言。所以php是要走的路。

这将用于具有将存储数据的 mysql 数据库的 Web 应用程序


我将如何将其分解为不同的单独值,特别是用粗体突出显示的值。它必须使用不同的字符串长度(如名称)自动完成。例如:

M1海狸/ALEXANDERMR EMGWEQE LHRCPH BA 0816 142M019D0014 13B>30B1WM8141BBA 29 BA 15700353 8

将是以下输出:

BEAVER/ALEXANDERMR:我的名字

EMGEQE:我的预订参考号

LHRCPHBA:乘坐 BA 航班从 LHR 飞往 CPH。

0816:航班号

字符串的其余部分在我的情况下是无用的,但它是您从扫描中获得的信息。

我知道如何将其划分为我想要的不同值,但是随着名称、航班号和机场代码的不同变化,我只是不知道如何动态调整和分离到我想要的不同值。

先谢谢大家了。

标签: php

解决方案


这会是一个解决方案吗?我做了一些挖掘。由于扫描与所有登机牌一致,因此所有空间都匹配。

$data = "M1BEAVER/ALEXANDERMR EMGWEQE LHRCPHBA 0816 142M019D0014 13B>30B1WM8141BBA 29 BA 15700353 8";

list($name, $bookinreference, $flight, $fnumber) = preg_split('/\s+/', $data);

echo substr($name, 2) . ' ' . substr($flight, 0, 3) . ' ' . substr($flight, 3, 3) . ' ' . substr($flight, 6) . $fnumber . ' ';

输出:

BEAVER/ALEXANDERMR LHR CPH BA0816

使用 substr() 删除不需要的字符并将 LHRCPHBA 拆分为 LHR CPH BA。


推荐阅读