从字符串php结尾的子程序?

时间:2013-10-29 09:30:12

标签: php arrays substr

我有这种数组,我会很容易理解

$picture = ( 'artist2-1_thumb.jpg',
             'artist2-2.jpg' ,
             'artist2-3_thumb.jpg',
             'artist2-4.jpg',
             'artist2-5_thumb.jpg');

现在我想使用substr来获取只有拇指的新数组,以获得像这样的新数组

$picturethumbs = ( 'artist2-1_thumb.jpg',
                   'artist2-3_thumb.jpg',
                   'artist2-5_thumb.jpg');

可以某些子目录,但从哪里开始?

2 个答案:

答案 0 :(得分:8)

您可以使用array_filter()过滤数组,只返回与给定条件匹配的项目:

$picturethumbs = array_filter($picture, function($v) {
  return strpos($v, '_thumb') !== false; 
});

将返回包含字符串_thumb的所有数组项。如果您不知道文件的扩展名,或者_thumb出现在字符串末尾之外的其他位置(例如my_thumb.gif仍然匹配),这可能很有用。

$picturethumbs = array_filter($picture, function($v) {
  return substr($v, -10) === '_thumb.jpg'; 
});

将返回最后10个字符与_thumb.jpg匹配的所有数组项。

两者(给出你的示例数组)输出:

array
  0 => string 'artist2-1_thumb.jpg' (length=19)
  2 => string 'artist2-3_thumb.jpg' (length=19)
  4 => string 'artist2-5_thumb.jpg' (length=19)

Here's a demo

答案 1 :(得分:1)

你在这里:

$picturethumbs = array();

foreach ($picture as $val) {
  if (substr($val, -10) == '_thumb.jpg') {
    $picturethumbs[] = $val;
  }
}