PHP正则表达式查找以_开头的图像

时间:2010-01-24 02:13:18

标签: php regex preg-match

我有一个函数可以加载它在wordpress uploads目录中找到的所有图像文件。我想略微修改它,以便它跳过任何以下划线字符开头的图像,跳过“_someimage.jpg”,而“someimage.jpg不是......

这是现有的功能......

 $dir = 'wp-content/uploads/';
 $url = get_bloginfo('url').'/wp-content/uploads/';
 $imgs = array();
  if ($dh = opendir($dir)) 
  {
  while (($file = readdir($dh)) !== false) 
   {
   if (!is_dir($file) && preg_match("/\.(bmp|jpeg|gif|png|jpg|)$/i", $file)) 
   {
   array_push($imgs, $file);
   }
  }
  closedir($dh);
  } else {
   die('cannot open ' . $dir);
  }

2 个答案:

答案 0 :(得分:1)

您可以使用strstr(我推荐)修改您当前的正则表达式或添加布尔表达式。

修改您当前的正则表达式:

"/^[^_].*\.(bmp|jpeg|gif|png|jpg)$/i"

或者,检测字符串中下划线的简单表达式为:

strstr($file, '_')

编辑:实际上您可以使用substr

substr($file, 0, 1) != '_'

答案 1 :(得分:0)

if (!is_dir($file) && preg_match("/\.(bmp|jpeg|gif|png|jpg|)$/i", $file)) 

可以转化为:

if (!is_dir($file) && preg_match("/^[^_].*\.(bmp|jpeg|gif|png|jpg|)$/i", $file))