从php中的文件夹中获取所有图像

从php中的文件夹中获取所有图像,php,image,wordpress,get,Php,Image,Wordpress,Get,我正在使用WordPress。我有一个像mytheme/images/myimages这样的图像文件夹 我想从文件夹myimages 请告诉我,如何获取图像名称。试试这个 $directory = "mytheme/images/myimages"; $images = glob($directory . "/*.jpg"); foreach($images as $image) { echo $image; } 您只需使用PHPopendir函数即可实现 例如: $handle = o

我正在使用WordPress。我有一个像mytheme/images/myimages这样的图像文件夹

我想从文件夹
myimages

请告诉我,如何获取图像名称。

试试这个

$directory = "mytheme/images/myimages";
$images = glob($directory . "/*.jpg");

foreach($images as $image)
{
  echo $image;
}

您只需使用PHP
opendir
函数即可实现

例如:

$handle = opendir(dirname(realpath(__FILE__)).'/pictures/');
while($file = readdir($handle)){
  if($file !== '.' && $file !== '..'){
    echo '<img src="pictures/'.$file.'" border="0" />';
  }
}
$handle=opendir(dirname(realpath(_文件))。/pictures/;
而($file=readdir($handle)){
如果($file!='.&&$file!='..){
回声';
}
}

非常快,因为您只扫描所需的目录。

检查是否存在,将所有文件放入数组中,将所有JPG文件放入preg grep,为所有图像返回新数组可以尝试以下操作:

$images=preg_grep('/\.(jpg|jpeg|png|gif)(?:[\?\#].*)?$/i', $files);


if ($handle = opendir('/path/to/folder')) {

    while (false !== ($entry = readdir($handle))) {
        $files[] = $entry;
    }
    $images=preg_grep('/\.jpg$/i', $files);

    foreach($images as $image)
    {
    echo $image;
    }
    closedir($handle);
}
这是我的一些代码

$dir          = '/Images';
$ImagesA = Get_ImagesToFolder($dir);
print_r($ImagesA);

function Get_ImagesToFolder($dir){
    $ImagesArray = [];
    $file_display = [ 'jpg', 'jpeg', 'png', 'gif' ];

    if (file_exists($dir) == false) {
        return ["Directory \'', $dir, '\' not found!"];
    } 
    else {
        $dir_contents = scandir($dir);
        foreach ($dir_contents as $file) {
            $file_type = pathinfo($file, PATHINFO_EXTENSION);
            if (in_array($file_type, $file_display) == true) {
                $ImagesArray[] = $file;
            }
        }
        return $ImagesArray;
    }
}

这个答案是专门针对WordPress的:

$base_dir = trailingslashit( get_stylesheet_directory() );
$base_url = trailingslashit( get_stylesheet_directory_uri() );

$media_dir = $base_dir . 'yourfolder/images/';
$media_url = $hase_url . 'yourfolder/images/';

$image_paths = glob( $media_dir . '*.jpg' );
$image_names = array();
$image_urls = array();

foreach ( $image_paths as $image ) {
    $image_names[] = str_replace( $media_dir, '', $image );
    $image_urls[] = str_replace( $media_dir, $media_url, $image );
}

// --- You now have:

// $image_paths ... list of absolute file paths 
// e.g. /path/to/wordpress/wp-content/uploads/yourfolder/images/sample.jpg

// $image_urls ... list of absolute file URLs 
// e.g. http://example.com/wp-content/uploads/yourfolder/images/sample.jpg

// $image_names ... list of filenames only
// e.g. sample.jpg
以下是一些其他设置,它们将为您提供除子主题之外的其他位置的图像。只需将上述代码中的前两行替换为所需的版本:

从上传目录:

// e.g. /path/to/wordpress/wp-content/uploads/yourfolder/images/sample.jpg
$upload_path = wp_upload_dir();
$base_dir = trailingslashit( $upload_path['basedir'] );
$base_url = trailingslashit( $upload_path['baseurl'] );
来自父主题

// e.g. /path/to/wordpress/wp-content/themes/parent-theme/yourfolder/images/sample.jpg
$base_dir = trailingslashit( get_template_directory() );
$base_url = trailingslashit( get_template_directory_uri() );
// e.g. /path/to/wordpress/wp-content/themes/child-theme/yourfolder/images/sample.jpg
$base_dir = trailingslashit( get_stylesheet_directory() );
$base_url = trailingslashit( get_stylesheet_directory_uri() );
来自子主题

// e.g. /path/to/wordpress/wp-content/themes/parent-theme/yourfolder/images/sample.jpg
$base_dir = trailingslashit( get_template_directory() );
$base_url = trailingslashit( get_template_directory_uri() );
// e.g. /path/to/wordpress/wp-content/themes/child-theme/yourfolder/images/sample.jpg
$base_dir = trailingslashit( get_stylesheet_directory() );
$base_url = trailingslashit( get_stylesheet_directory_uri() );

当您想从文件夹中获取所有图像时,请使用有助于获取所有图像的内置函数
glob()。但是当你得到所有的时候,有时需要检查所有的都是有效的,所以在这种情况下,这段代码可以帮助你。此代码还将检查它是否为图像

  $all_files = glob("mytheme/images/myimages/*.*");
  for ($i=0; $i<count($all_files); $i++)
    {
      $image_name = $all_files[$i];
      $supported_format = array('gif','jpg','jpeg','png');
      $ext = strtolower(pathinfo($image_name, PATHINFO_EXTENSION));
      if (in_array($ext, $supported_format))
          {
            echo '<img src="'.$image_name .'" alt="'.$image_name.'" />'."<br /><br />";
          } else {
              continue;
          }
    }
$all_files=glob(“mytheme/images/myimages/*”);

对于($i=0;$i),只需两行代码即可显示实际的图像目录(不太安全)

 $dir = base_url()."photos/";

echo"<a href=".$dir.">Photo Directory</a>";
$dir=base_url()“photos/”;
回声“;
//要搜索/扫描的目录的路径
$directory=“”;
//echo“$directory”
//获取目录中的所有文件。如果需要任何特定扩展名,只需将.extension
//$local=glob($directory.“*”);
$local=glob(“$directory.”{*.jpg,*.gif,*.png},glob_括号);
//打印每个文件名
回声“
    ”; foreach($本地作为$项目) { 回音“
  • ”; } 回声“
”;
但是现在没有检查dir realy excistsMy目录是否为:
$directory=“images[big]”;
但事实并非如此work@Md.Shariful Islam有没有办法将目录与数据库中的id相关联?我只想添加使用目录路径中的最后一个反斜杠/来获取几种类型。有一个有用的选项:
$images=glob($dir/*。{jpg,png,bmp}),glob_BRACE)
您能详细说明一下您的答案吗?检查是否存在,将所有文件放入数组,preg grep all JPG files,echo new array For all images可以尝试以下方法:'$images=preg grep('/\.(JPG | jpeg | png | gif)(?:[\?\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\].])$/i',$files);'请删除起始引号。
while while(false!==(
part means?我在几个答案中都看到了,但对我来说没有意义,为什么我们要循环使用一个false语句?@Studocwho readdir函数php.net中的警告:此函数可能返回Boolean false,但也可能返回一个计算结果为false的非Boolean值。有关更多信息,请阅读Booleans部分。使用===运算符测试此函数的返回值。您应该将此值更改为:
$i=1;
$i=0;
,并且它工作正常!