如何从数组中每个项目的末尾删除.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");
}
}
?>
答案 0 :(得分:4)
假设字符串不能保证最后总是有.htm
,那么通过以下函数运行你想要修改的字符串应该适合你:
$str = preg_replace('/\.htm$/', '', $str);
答案 1 :(得分:3)
您可以使用array_map()
(迭代数组)和pathinfo()
(仅返回文件名部分减去扩展名)。
这适用于任何文件扩展名。
$dirArray = array_map(function($item) {
return pathinfo($item, PATHINFO_FILENAME);
}, $dirArray);
匿名函数是&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>");
}
}