这是我从扫描登机牌时得到的字符串。
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:航班号
在我的情况下,字符串的其余部分无用,但这是您从扫描中获得的信息。
我知道如何将其划分为所需的不同值,但是在名称,航班号和机场代码上有不同的更改,我只是不知道如何动态调整和分离为所需的不同值。
谢谢大家。
答案 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
编辑:仅当空格一致时,此答案才有效。