使用目录中的文件名填充下拉列表在PHP中

时间:2015-03-06 00:46:02

标签: php

我试图用目录中的文件名填充我的下拉菜单,我在SO搜索了关于此查询的文章我找到了几个答案并尝试了但是它们似乎都没有用,我觉得很奇怪,因为它们是选择作为答案,其中一些人有高票 以此article为例,这是我尝试过的参考资料之一,但它似乎对我不起作用

以下是基于我提供的参考链接的代码

<select name="templ" class="form-control input-sm">
    <?php 
         foreach(glob(dirname(__FILE__) . '/els-content/*') as $filename){
             $filename = basename($filename);
             echo "<option value='" . $filename . "'>".$filename. </option>";
         }
    ?>  
</select>

这根本不会返回任何值。可能是什么问题?

1 个答案:

答案 0 :(得分:0)

大家好,所以我能够回答我自己的问题,因为@bobdye已经指出了什么,好的,我会在这里追逐它是如何解决的

dirname(FILE) . '/els-content/*'

返回当前目录加上字符串'/els-content/*',我的问题是els-content中的文件没有显示在我的下拉列表中,所以我使用echo来检查返回的是什么,所以我发现了它会返回类似这样的内容

Users/WhosPC/Desktop/cms_form/myPadmin/els-content/*

其中els-content已发现myPadmin含义els-contentmyPadmin处于同一级别,所以我所做的就是使用chdir()然后在变量

中使用getcwd()

所以看起来像是

                   <?php
                        chdir('../');
                      $s =  getcwd();
                        ?>
                    <select name="templ" class="form-control input-sm">
                    <?php 
                           foreach(glob($s . '/els-content/*') as $filename){
                           $filename = basename($filename);
                           echo "<option value='" . $filename . "'>".$filename."</option>";

                        }
                    ?>  
                        </select>

虽然我不确定chdir('../')getcwd()对于这类任务是否足够可靠..当这个cms宝贝出现在现实世界中并且跑步时

随意批评这个脚本,以便我可以进一步改进

更新代码

             $s =  realpath(getcwd()."/..");
                    foreach(glob($s . '/els-content/*') as $filename){
                   $filename = basename($filename);

                   echo "<option value='" . $filename . "'>". $filename."</option>";

                }

好的,我没有删除我的代码的第一个版本,以便偶然发现这篇文章的用户可以看到第一个和第二个代码的区别 @prodigitalson在我的第一个代码片段中指出了