【问题标题】:Check if items are in sequence regardless of other items in between检查项目是否按顺序排列,而不考虑中间的其他项目
【发布时间】:2016-09-04 17:17:02
【问题描述】:

给定一个序列 ALJ

我想检查这个序列是否存在于另一个序列中,比如

AASDALLLACCCCJ

不管中间的其他元素。

我的想法是先用php去除不匹配的字符。

$string_looking_for = "ALJ";
$string_haystack = "AASDALLLACCCCJ";
preg_match("/[".$string_looking_for."]/g",$string_haystack,$matches);

然后在结果匹配中做一个简单的 strpos。

会有更好的方法吗?

【问题讨论】:

  • 关键字符的顺序无关紧要,对吧?我的意思是,这个LAALJJA 有效吗?
  • 如果你的字符串在第一个 L 之前有一个 J 怎么办?有关系吗?
  • 然后在结果匹配中做一个简单的 strpos - 做什么?
  • @RomanPerekhrest 我希望关键字符的顺序很重要 strpos 将位于仅包含关键字符的字符串上。
  • @CasimiretHippolyte 那么字符串将与大海捞针不匹配,因为顺序不正确。

标签: php arrays regex string strpos


【解决方案1】:

你可以这样做:

$string_looking_for = "/A.*L.*J/";
$string_haystack = "AASDALLLACCCCJ";
preg_match($string_looking_for,$string_haystack,$matches);
print_r($matches);

使用.* 忽略中间的字符(如果有)。

【讨论】:

  • 很好,它与“AAS​​DAJLLLACCCC”不匹配;例如,这很棒!
猜你喜欢
  • 2010-09-08
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多