从PHP数组中的项目中删除.htm

时间:2011-08-30 00:32:31

标签: php arrays

如何从数组中每个项目的末尾删除.htm?我是PHP的新手,所以尽可能的具体帮助将非常感激。

这是我的剧本:

<?PHP

    $myDirectory = opendir("pages/");

    while($entryName = readdir($myDirectory)) {
        $dirArray[] = $entryName;
    }

    closedir($myDirectory);

    $indexCount = count($dirArray);

    sort($dirArray);

    for($index=0; $index < $indexCount; $index++) {
            if (substr("$dirArray[$index]", 0, 1) != "."){ // don't list hidden files
            print("<a href=\"index.php?p=$dirArray[$index]\">$dirArray[$index]</a>/n");
        }
    }
?>

3 个答案:

答案 0 :(得分:4)

假设字符串不能保证最后总是有.htm,那么通过以下函数运行你想要修改的字符串应该适合你:

$str = preg_replace('/\.htm$/', '', $str);

答案 1 :(得分:3)

您可以使用array_map()(迭代数组)和pathinfo()(仅返回文件名部分减去扩展名)。

这适用于任何文件扩展名。

$dirArray = array_map(function($item) {
    return pathinfo($item, PATHINFO_FILENAME);
}, $dirArray);

CodePad

匿名函数是&gt; = PHP 5.3的东西。如果使用旧版本,只需使用命名函数。

答案 2 :(得分:1)

您可以使用迭代器简化代码。这是一个例子:

foreach (new DirectoryIterator('pages') as $fileInfo) {
    if ($fileInfo->isFile()) {
        $name = $fileInfo->getBasename('.htm');
        print("<a href='index.php?p=$name'>$name</a><br>");
    }
}