gpt4 book ai didi

php - 有没有办法解析这些字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:04:08 25 4
gpt4 key购买 nike

如果有,我肯定没看到。我们正在对驾驶执照进行磁条读取。数据似乎不一致。驾驶执照应遵循的标准对任何一个字段的长度进行了限制。我无法理解的部分是如何解析这些数据。

例如,一个字段可能允许总共 13 个字符,但只使用了 8 个。在这种情况下,将始终有一个插入符号分隔符结束该字符串部分。然而,这里是棘手的部分,如果一个字段恰好是 13(允许的 13),则没有结束插入符分隔符,也没有右填充。所有数据一起运行。

这里有两个示例字符串。

%CAMISSION HILLSSMITH$JOHN$JIM$JR^1147 SOMESTREET^?
%CALOS ANGELES^DOE$JOHN$CARL^14324 MAIN ST APT 5^?

使用 PHP,我该怎么做?我真的很感激能帮上忙。我真的很难过。

最佳答案

好的,我们开始吧。我使用了 x 标志来使正则表达式更具可读性并能够对其进行评论。

根据@EboMike 发布的规范,每个字段都有最大长度,如果小于该长度,则以 ^ 终止。名称是一个复合字段,使用 $ 作为姓氏、名字、中间名和后缀之间的分隔符。地址也是如此,如果地址有多行,则使用 $

$licenses = array(
'%CAMISSION HILLSSMITH$JOHN$JIM$JR^1147 SOMESTREET^?',
'%CALOS ANGELES^DOE$JOHN$CARL^14324 MAIN ST APT 5^?'
);

foreach ($licenses as $license) {
preg_match(
'@
^%
(.{2}) # State, 2 chars
([^^]{0,12}.) # City, 13 chars, delimited by ^
([^^]{0,34}.) # Name, 35 chars, delimited by ^
([^^]{0,28}.) # Address, 29 chars, delimited by ^
\?$
@x',
$license,
$fields
);

$state = $fields[1];
$city = rtrim($fields[2], '^');
$name = explode('$', rtrim($fields[3], '^'));
$address = explode('$', rtrim($fields[4], '^'));

echo "$license\n";
echo "STATE: "; print_r($state); echo "\n";
echo "CITY: "; print_r($city); echo "\n";
echo "NAME: "; print_r($name);
echo "ADDRESS: "; print_r($address);
echo "\n";
}

输出:

CAMISSION HILLSSMITH$JOHN$JIM$JR^1147 SOMESTREET^
STATE: CA
CITY: MISSION HILLS
NAME: Array
(
[0] => SMITH
[1] => JOHN
[2] => JIM
[3] => JR
)
ADDRESS: Array
(
[0] => 1147 SOMESTREET
)

CALOS ANGELES^DOE$JOHN$CARL^14324 MAIN ST APT 5^
STATE: CA
CITY: LOS ANGELES
NAME: Array
(
[0] => DOE
[1] => JOHN
[2] => CARL
)
ADDRESS: Array
(
[0] => 14324 MAIN ST APT 5
)

关于php - 有没有办法解析这些字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3690155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com