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

2023-12-23

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

例如,某个字段可能总共允许 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";
}

Output:

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
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法解析这些字符串? 的相关文章

  • SQLite适合并发读吗?

    在没有锁定的情况下 SQLite 数据库的性能是否能达到每秒 50 次读取左右 我正在尝试确定它是否可以在不会经常 写入 的 PHP 网站上使用 它主要是从一小部分表中读取相同的数据 没问题 并发读 写实际上会被 SQLite 序列化 所以
  • 构建、部署、配置和回滚所需的 Jenkins 指南,保留 5 个版本

    我对詹金斯很陌生 有一定的了解 但需要进一步的指导 我在 Git 存储库上有一个 PHP 应用程序 它使用 Composer 具有资产 具有用户上传的媒体文件 使用 Memcache Redis 具有一些代理 工作人员 并且具有迁移文件 到
  • 在 Woocommerce 中设置购物车商品价格后重新计算总计

    通过 set price 方法更改产品价格后 如何更改小计价格 现在在review order php中按旧价格计算总成本 cart php foreach WC gt cart gt get cart as cart item key g
  • 禁用 php 文件缓存以进行调试

    我有一个安装了 zpanel 和 apache2 php mysql 的 vps 我正在为 php 网站开发一个小型后端 对于准备发布的网站来说情况是完美的 但现在我需要禁用缓存 php 文件的服务器功能以立即测试我的 php 文件的正确性
  • PHP 如果找到特定值范围,则从主数组中删除子数组

    假设我有以下数组 9 gt Array 0 gt Bob Smith 1 gt email protected cdn cgi l email protection 2 gt Helsinki 3 gt 10 4 gt 34 5 gt 20
  • 如何将这种奇怪的字符串解码为UTF-8? (PHP)

    所以我有 u041E u043B u0435 u0433 20 u042F u043A如何将其保存为真正的 UTF 8 或 对我来说更好的是 HTML 实体 这就是 JavaScriptescape 格式 它与 URL 编码类似 但不兼容
  • PHP 中的变量 $this 意味着什么?

    我看到变量 this一直用PHP 但我不知道它有什么用 我个人从未使用过它 有人可以告诉我变量如何 this在 PHP 中工作吗 它是对当前对象的引用 最常用于面向对象的代码中 参考 http www php net manual en l
  • php mail() 函数:如何在 html 消息中显示图像和使用样式[重复]

    这个问题在这里已经有答案了 我目前遇到 php 问题mail 功能 第一个问题是某些电子邮件浏览器 例如 gmail 不会自动显示图像 第二个问题是该消息未使用我输入的样式 p 这是仅适用于 php 的 消息 部分的代码mail 功能 其余
  • PHP:还记得我和安全吗?

    在我学习 PHP 如何支持 Unicode 的间隙 我一直在研究如何让我的 记住我 cookie 更加安全 然而 有一些事情我不明白 还有一些我自己的思考 我希望得到一些建议和意见 1 有没有什么方法可以采用不涉及cookie的 记住我 功
  • Magento 开源 2.3 - CSS 和 JS 未加载

    I installed Magento 2 3 successfully but when type http localhost Magento2 http localhost Magento2 I get a blank page li
  • 如何正确使用 Bearer 代币?

    我正在制作一个授权系统PHP 我遇到了传递 JWT 令牌的承载方案 我阅读了 RFC 6750 1 我有以下疑问 这如何提高安全性 成功授权和登录后 服务器在其主体中使用 JWT 令牌响应客户端 现在当客户端发出另一个请求时 我不清楚如何实
  • Laravel 使用 Monolog\Handler\BrowserConsoleHandler 进行日志记录

    How can 拉拉维尔 5的日志记录更改为Monolog Handler BrowserConsoleHandler What doesn t在 Laravel 5 中工作但是does在独立的 PHP 文件中工作 use Illumina
  • 你能帮助我更好地理解 PHP 类吗?

    我是一个学习速度很慢的人 我想在编码方面 我已经学习 PHP 几年了 但我仍然不理解类 所以是时候我付出一些努力 至少更好地理解它们了 我凡事都使用函数 人们经常在这里对我发表评论 他们不敢相信我有一个社交网站 而且我不使用课程 我真的不明
  • PHP 会话混乱

    好吧 我已经很困惑了 我有一个存储在会话中的对象 我可以向该对象添加项目 到目前为止非常简单 我像这样初始化对象 template new Template mysqli SESSION template serialize templat
  • Codeigniter 错误:不允许您尝试上传的文件类型

    如果我上传一个csv文件 没有问题localhost一切工作正常 但是当我在实时服务器上上传我的应用程序并上传csv文件然后抛出此错误 The filetype you are attempting to upload is not all
  • Active Record 库的 CodeIgniter 挂钩

    我需要一些帮助来理解 CodeIgniter 的钩子逻辑 以使代码适应我的需要 这一页 https www codeigniter com user guide general hooks html https www codeignite
  • 比在配置文件中以纯文本形式存储 mysql 密码更好的方法吗?

    许多 PHP 程序要求用户将 mysql 密码以纯文本 字符串或常量 形式存储在应用程序根目录的配置文件中 这一直困扰着我 这么多年过去了 还有更好的方法吗 到目前为止 我已经提出了两个最小的安全提升方案 使用 htaccess 中的规则使
  • Laravel 搜索路由和控制器

    我正在构建我的第一个基本 Laravel Web 应用程序 在学习了一些教程之后 这是我自己修改的第一个应用程序 我在路由到控制器然后获取正确的网址时遇到了一些麻烦 理想情况下 此时我应该只有两条路线 and user 在主页上 您可以通过
  • PHP 中的金字塔星号

    请看我的代码 for row var row gt 1 row for j 0 j lt row j echo echo echo nbsp Output 但我需要输出如下 您可能想查看一些字符串函数
  • ImagickException 并显示消息 Postscript delegate 在 MAMP 3.0.5 上失败

    我正在尝试使用 MAMP 3 0 5 将 PDF 转换为 png 文件 我知道我的 PHP 代码可以在我们的 Linux 服务器上正常运行 我在 Mac OSX 10 8 5 上安装了 MAMP 3 0 5 当我运行脚本将 PDF 转换为

随机推荐