使用链接中的文件名创建一个菜单

时间:2013-10-13 09:24:40

标签: php menu glob pathinfo

我有一个菜单,我在其中获取目录中文件的名称并将它们放在菜单中。 这是我使用的代码:

<ul>
    <?php   foreach(glob("overzicht/projects/{*.php,*.html}", GLOB_BRACE) as $file) {
                echo "<li><a>".pathinfo($file, PATHINFO_FILENAME)."</a></li>";
         } 
    ?>
</ul>

现在我想在菜单中找到一个链接,所以li就像这样

<li><a href="filename.php"> filename </a></li>

我尝试了这个但是它不会起作用

<ul>
    <?php   foreach(glob("overzicht/projects/{*.php,*.html}", GLOB_BRACE) as $file) {
                echo "<li><a href="".pathinfo($file, PATHINFO_FILENAME).".php">".pathinfo($file, PATHINFO_FILENAME)."</a></li>";
            } 
    ?>          
</ul>

我做错了什么或为什么要这样做?

修改

我还希望菜单的第一个字母成为首都。这也有可能吗?

2 个答案:

答案 0 :(得分:2)

首字母是您可以使用的资本:ucfirst()

为您的pathinfo,确保$ file不为空。在这里发布错误。

答案 1 :(得分:1)

链接

您的代码存在的问题是您没有在"中正确转义引号echo ...

foreach(glob("./path/to/file/{*.ext}", GLOB_BRACE) as $file) {
    echo "<li><a href=\"".pathinfo($file, PATHINFO_FILENAME).".php\">".pathinfo($file, PATHINFO_FILENAME)."</a></li>";
}

使用单引号 '

foreach(glob("./path/to/file/{*.ext}", GLOB_BRACE) as $file) {
    echo '<li><a href="'.pathinfo($file, PATHINFO_FILENAME).'.php">'.pathinfo($file, PATHINFO_FILENAME).'</a></li>';
}

大写第一个字母

至于你问题的第二部分,如果你想把第一个字母写成大写,那么(如 ali A 建议的那样)你可以使用php函数ucfirst 。如果您想将文件名设置为标题大小写,则可以使用ucwords代替。

$a = "filename";
$b = "this file name";

echo ucfirst($a); // Filename
echo ucwords($a); // Filename
echo ucfirst($b); // This file name
echo ucwords($b); // This File Name