我想在下面的脚本中添加一个正则表达式过滤器(在array_push之前),以便当它遇到具有相同前缀“_filename”的文件并且其中一个匹配具有'-150x150。 “在文件名的末尾,它会推送该图像,并使用相同的前缀跳过其他图像。正则表达式匹配
但是,如果该集合中没有图像具有'-150x150'。在文件名,它选择与根前缀的图像(_filename.ext)
例如,如果下面的文件驻留在$目录文件夹:
_file.png
_file-150x150.png
_file-200x300.png
_someImage.png
_myfile.jpg
_myfile-200x200.jpg
我想它推_file -150x150.png,someImage.png和myfile.jpg放入数组中,跳过其他部分。
$dir = 'wp-content/uploads/';
if(!is_dir($dir)){return;}
$url = get_bloginfo('url').'/wp-content/uploads/';
$imgs = array();
if ($dh = opendir($dir))
{
$myfilter="";
while (($file = readdir($dh)) !== false)
{
if (!is_dir($file)&& $file != "." && $file != ".." && preg_match("/^[".$myfilter."_].*\.(bmp|jpeg|gif|png|jpg)$/i", $file))
{
array_push($imgs, $file);
}
}
closedir($dh);
} else {
die('cannot open ' . $dir);
}
if($imgs)
{
sort($imgs);
echo '<div>';
foreach ($imgs as $idx=>$img)
{
$class = ($idx == count($imgs) - 1 ? ' class="last"' : '');
echo $prelink.' src="' . $url . $img . '" alt="' .$img . '"' . $class . ' />'.$postlink;
}
echo '</div>';
}
对我来说似乎没有太多的模式。 – Shef
是的,它不是很明显,但第一种模式是匹配“ - ”之前的文件名。第二种模式是“ - ”之后的模式 –