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