使用PHP查找目录名称

时间:2015-09-09 10:23:45

标签: php wordpress

我不知道如何在没有完全超出描述的情况下进入这一点,所以我尽量做到尽可能短而不遗漏重要的一点。我之前看过一个命令行解决方案,但找不到。所以考虑一下PHP解决方案。

我目前有一大堆图像都保存在以下布局的各种文件夹中:

locationname/hotelname/image.jpg
locationname/businessname/hotelname/image.jpg
locationname/businessname/hotelname/image.jpg
locationname/operatorname/hotelname/image.jpg

显然,这里的共同点是目录始终以酒店名称结尾,幸运的是,酒店名称与图像所涉及的Wordpress帖子标题的名称相同。

我没有尝试将所有$ hotelname文件夹重新排列到同一目录中,我认为我可以扫描目录中的最低目录,然后我可以从中获取图像。有点像foreach循环,图像来源如下:

<img src="$calculatedurl/image.jpg"/>

提前致谢。

编辑:我想要实现的目标。

每个帖子都有一个帖子标题,标题几乎与上传目录中包含其图像的文件夹的名称相同。因此,对于名为“Agrade Apartments”的酒店,图像存储在:

wp-content/uploads/locationame/Agrade Apartments/image.jpg

有超过1000套公寓,所以我想写一个条件语句,检查图像是否有附件,如果有,然后显示图像,而不是试图通过每个帖子并手动添加图像。附加,如果没有,则获取$ posttitle并扫描上传目录中的同名文件夹,获取内容和foreach $ contents作为$ content将文件添加到jQuery滑块。

所以我粗略地说:

 $posttitle = the_title();

 $args = array(
 'post_type' => 'attachment',
 'numberposts' => -1,
 'post_status' => null,
 'post_parent' => $post->ID
 );

 $attachments = get_posts( $args );
 $alternativeurl = 
  if ( $attachments ) {
    foreach ( $attachments as $attachment ) {
       echo '<li>';
       echo wp_get_attachment_image_src();
       echo '</li>';
      }
  } else {
  //use a php function to loop through all the folders in the 
  //wp-content/uploads that match the $posttitle variable.
  //when found, loop through each file inside the folder and add 
  //each url to my jQuery slider as a foreach loop.
  }

希望有助于进一步解释。

2 个答案:

答案 0 :(得分:0)

据我所知,您希望扫描所有文件夹层次结构,并查找“属于”某些酒店列表的所有图像。

如果我们假设所有酒店名称都是唯一的,并且您可以访问图像所在的文件系统,我建议您

  1. 使用readdir()获取存储图像的根目录的内容
  2. 使用id_dir()is_file()检查下一个项目是目录还是常规文件
  3. 深入迭代到层次结构
  4. 如果文件符合您的要求(例如,它是“* .jpg”),您可以使用realpath()获取其目录的完整路径,并使用DIRECTORY_SEPARATOR作为分隔符拆分字符串
  5. array_pop()会为您提供酒店名称
  6. 的名称

    这里有一些额外的信息: http://php.net/manual/en/ref.dir.php

答案 1 :(得分:0)

我有类似的东西来显示所有文件夹

$sName = '.';
$oDir    = opendir($sName);
$aDirList = array();

while($sDir = readdir($oDir)) {
    if($sDir != '.' && $sDir != '..') {
        if(is_dir($sName.'/'.$sDir)) {
            $aDirList[] = $sDir;
        }
    }
}

closedir($oDir);

if(!empty($aDirList)) {
    sort($aDirList);
    echo "Folders list : <br>";
    echo "<ul>";
    foreach($aDirList as $sDir) {
        echo "<li><a href=\"$sName/$sDir \">$sDir</a></li>";
    }
    echo "</ul>";
}

也许他们会有一些错误,但这是我的代码的一个例子......

希望我帮助你! :)