php - 如何从 PHP 中的数组中获取相关项的第一个子集?
问题描述
我有一个文件名数组,例如:
D-CGRS_SS-2000_BLUE.jpg
D-CGRS_SS-2000_GREEN.jpg
D-CGRS_SS-2000_LIME.jpg
D-CGRS_SS-2000_NAVY.jpg
D-CGRS_SS-2000_RED.jpg
D-CGRS_SS-2000_WHITE.jpg
D-CGRS_SS-2000_YELLOW.jpg
D-CGRS_SS-2001_BLUE.jpg
D-CGRS_SS-2001_GREEN.jpg
D-CGRS_SS-2001_LIME.jpg
D-CGRS_SS-2001_NAVY.jpg
D-CGRS_SS-2001_RED.jpg
D-CGRS_SS-2001_WHITE.jpg
D-CGRS_SS-2001_YELLOW.jpg
D-CGRS_SS-2002_BLUE.jpg
D-CGRS_SS-2002_GREEN.jpg
D-CGRS_SS-2002_LIME.jpg
D-CGRS_SS-2002_NAVY.jpg
D-CGRS_SS-2002_RED.jpg
D-CGRS_SS-2002_WHITE.jpg
D-CGRS_SS-2002_YELLOW.jpg
D-CGRS_SS-2003_BLUE.jpg
D-CGRS_SS-2003_GREEN.jpg
D-CGRS_SS-2003_LIME.jpg
D-CGRS_SS-2003_NAVY.jpg
D-CGRS_SS-2003_RED.jpg
D-CGRS_SS-2003_WHITE.jpg
D-CGRS_SS-2003_YELLOW.jpg
.
.
.
将此列表缩减为仅前七个项目的最佳方法是什么?那些都有相同的“SS”编号(SS-2000)?所以结果数组就是:
D-CGRS_SS-2000_BLUE.jpg
D-CGRS_SS-2000_GREEN.jpg
D-CGRS_SS-2000_LIME.jpg
D-CGRS_SS-2000_NAVY.jpg
D-CGRS_SS-2000_RED.jpg
D-CGRS_SS-2000_WHITE.jpg
D-CGRS_SS-2000_YELLOW.jpg
编辑:
谢谢你的回复。但是,在发布之前,我应该更清楚地了解我的请求。我很抱歉。以下是一些额外的限制:
该SS-2000
部分并不总是SS-2000
。在某些目录中,该系列以SS-1900
orSS-1806
或其他开头。
另外,我不能保证每组总是有 7 个。有些可能有 3 个或 12 个或其他。
最后,我不能保证前两位数字会是SS
,但它会是SS
、HA
或NH
。
经过一夜好眠并阅读您的回复,我可能想出了一个主意:我可能想在数组中的第一个元素上使用preg_match
来查找模式/(SS|HA|NH)-\d{4}/
,然后将$matches[0]
结果用作preg_grep
数组上的模式。(如果可以的话,请随意回复 RegEx 模式的简化。)
解决方案
如果前 7 个项目的意思是获取具有此前缀的图像D-CGRS_SS-2000
并且数组中的位置无关紧要,则可以使用模式来匹配那些从字符串开头^
到结尾$
匹配并匹配颜色的名称[A-Z]+
用于大写字符的名称。
例如,如果您的文件名数组是$filenames
,则一种选择是使用preg_grep:
$filteredFilenames = preg_grep("~^D-CGRS_SS-2000_[A-Z]+\.jpg$~", $filenames);
print_r($filteredFilenames);
结果
Array
(
[0] => D-CGRS_SS-2000_BLUE.jpg
[1] => D-CGRS_SS-2000_GREEN.jpg
[2] => D-CGRS_SS-2000_LIME.jpg
[3] => D-CGRS_SS-2000_NAVY.jpg
[4] => D-CGRS_SS-2000_RED.jpg
[5] => D-CGRS_SS-2000_WHITE.jpg
[6] => D-CGRS_SS-2000_YELLOW.jpg
)
推荐阅读
- node.js - 带有 firebase 实时数据库的 Telegraf 在 AWS Lambda 中不起作用
- regex - Hive QL 正则表达式,仅接受字符串和数字,但不接受特殊字符
- r - 如何使用R中Shiny中的滑块动态更新直方图的x轴范围
- c# - Android.OS.Environment...哪个命名空间?
- c# - 用于 RabbitMQ 管理 API 的 C#/.net API
- xml - XSL 用字符串替换特殊字符
- javascript - React Js - 单击ant design stepper时如何更改URL?
- python - 生成随机数并将它们放入一个集合中
- python - 如何强制 numpy scalar*array 乘法得到 float64 结果?
- java - 使用 Intent 传递整数会导致空对象引用