php - 分解从登机牌扫描的字符串
问题描述
这是我通过扫描登机牌得到的字符串。
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:航班号
字符串的其余部分在我的情况下是无用的,但它是您从扫描中获得的信息。
我知道如何将其划分为我想要的不同值,但是随着名称、航班号和机场代码的不同变化,我只是不知道如何动态调整和分离到我想要的不同值。
先谢谢大家了。
解决方案
这会是一个解决方案吗?我做了一些挖掘。由于扫描与所有登机牌一致,因此所有空间都匹配。
$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。
推荐阅读
- angular - 角度测试 async+whenStable 和 fakeAsync+tick 有什么区别?
- python-3.x - ImportError:无法导入名称“pareto”
- java - JAVAFX : 三个 tableviews => 当我选择一个 tableview 时,必须删除其他的并删除颜色
- csv - Grep:从第二列中删除重复的输入
- java - micronaut HttpResponse 读取正文
- windows - Golang httpClient CA证书默认位置?
- c# - 如何使用没有约束的类型参数调用具有泛型约束的方法?
- csv - 使用 CMD/Batch 从 CSV 中删除列
- sql - 在 SQL Server 中锁定多个表
- maps - 填充MRPT velodyne扫描观察