【问题标题】:Select first or last character groups from string with period separators从带有句点分隔符的字符串中选择第一个或最后一个字符组
【发布时间】:2013-02-28 05:53:01
【问题描述】:

我正在寻求有关 php 代码的帮助,以操作我从 SQL 数据库中检索的字符串。该字符串采用以下格式:由句点分隔的 3-5 个字母数字组。字符串中字母数字组的数量变化很大(从 1 到 20 个或更多组)。

  • 示例 1:J89.NEWTT.IIU.MZZ.OXI.
  • 示例 2:ORD6.BAE.J89.DLH.YRL.N5500.W9700.NUGSM.N6500.

我需要用这些做两件事:

  1. 仅将句点之间的前 3 组分隔成一个新字符串(在示例 1 中,结果将为“J89.NEWTT.IIU”)
  2. 仅将句点之间的最后 3 组分隔成一个新字符串(在示例 2 中,结果将为“W9700.NUGSM.N6500”)

我很难让普通玩家使用它。感谢您的帮助!

【问题讨论】:

  • 为什么是regex? $chunks = explode('.','J89.NEWTT.IIU.MZZ.OXI');
  • explode('.','J89.NEWTT.IIU.MZZ.OXI')
  • 谢谢,删除了正则表达式,是的,它是。谢谢。
  • 谢谢:$chunk=explode....; $result = array_slice($chunk,-3,3); implode(".",$result); 就像一个魅力。

标签: php string


【解决方案1】:

拆分它 (explode),切出你想要的部分,然后再用 . 将它们重新组合在一起。

这是一种奇怪的格式,选择前/后三个块似乎真的很随意。是结构化数据吗?如果是这样,您为什么将其存储在数据库的单个字段中?

【讨论】:

  • 同意。 Explode 似乎最好,并且在重新加入 first 3 时易于管理。当可能有任意数量的字母数字组时,只是不确定如何选择最后 3 个组重新加入(爆炸后)。
  • 解释数据...它是飞机航线,还与航班号、纬度、经度和各种其他数据相关联。该块是另一个服务器以这种格式提供的飞机航线。在某些情况下,我需要在出发后交付前 3 点,在某些情况下,在到达前交付最后 3 点......如果这样的解释有帮助的话。
  • 为什么你没有另一个表格,其中包含每个航班号、始发地、目的地等的列?你有点违背使用数据库的目的。另外,last three elements 之前已经逐字提及
  • 也许吧。试图在别人的数据库系统中工作。但最好将一些数据分支到另一个数据库中。感谢您的链接。努力搜索,但猜我今天的堆栈溢出错误。对不起,但感谢您的帮助!
  • 再次感谢 Evee 和 Ubercooluk:$chunk=explode....; $result = array_slice($chunk,-3,3); implode(".",$result); 就像一个魅力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多