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


Removing the .htm From Items in a PHP Array

如何从数组中每个项目的末尾删除。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");
        }
    }
?>

假设字符串不保证总是在末尾有.htm,那么通过以下函数运行您想要修改的字符串应该可以工作:

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

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

任何文件扩展名都可以使用

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

CodePad .

匿名函数是一个>= PHP 5.3的东西。如果使用旧版本,请使用命名函数

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

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