分解从登机牌扫描的字符串

时间:2018-07-12 13:26:51

标签: php

这是我从扫描登机牌时得到的字符串。

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

我试图寻找不同的解决方案,但我一直看到一些python和java登机牌解析器,这些解析器都不是我专门精通的语言。因此, php 是必经之路。

>

这将在具有mysql数据库的Web应用程序中使用,该数据库将存储数据


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

  

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

将是以下内容的输出:

  

BEAVER / ALEXANDERMR:我的名字

     

EMGWEQE:我的预订参考号

     

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

     

0816:航班号

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

我知道如何将其划分为所需的不同值,但是在名称,航班号和机场代码上有不同的更改,我只是不知道如何动态调整和分离为所需的不同值。

谢谢大家。

2 个答案:

答案 0 :(得分:0)

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

$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。

答案 1 :(得分:-1)

您正在寻找的是explode():

$string = "M1BEAVER/ALEXANDERMR EMGWEQE LHRCPHBA 0816 142M019D0014 13B>30B1WM8141BBA 29 BA 15700353 8";
$array = explode(" ", $string);
var_dump($array);

输出:

array(10) {
  [0]=>
  string(20) "M1BEAVER/ALEXANDERMR"
  [1]=>
  string(7) "EMGWEQE"
  [2]=>
  string(8) "LHRCPHBA"
  [3]=>
  string(4) "0816"
  [4]=>
  string(12) "142M019D0014"
  [5]=>
  string(17) "13B>30B1WM8141BBA"
  [6]=>
  string(2) "29"
  [7]=>
  string(2) "BA"
  [8]=>
  string(8) "15700353"
  [9]=>
  string(1) "8"
}

在这里尝试: PHP Sandbox

编辑:仅当空格一致时,此答案才有效。