0

我编写了一个小的 php 脚本,它从目录中读取文件名,使用explode 去除扩展名,然后在 php 页面上显示文件名。

但是由于某种原因,每当文件名包含多个单词时,它只显示文件名的第一个单词。

这是代码,

while  ($name = readdir ($handle)) 
        {
            if ($name == '.' || $name == '..')
            continue; /* don't echo anything, skip to next read */
            $i++;
            echo '<td >';
            echo '<form name="form" method="get" action="download.php">';
            echo '<input type="hidden" name="file" value='.$name.' />';
            $parts=explode(".",$name);
            $name=$parts[0];
            echo '<input type="submit" name="submit" value='.$name.' class="subbutton" /> </br></br>';
            echo '</form>';
            echo '</td>';
            if($i==5)
            {
            echo '</tr>';
            echo '<tr>';
            $i=0;
            }
        }
4

2 回答 2

2

更改此行:

echo '<input type="submit" name="submit" value='.$name.' class="subbutton" /> </br></br>';

对此:

echo '<input type="submit" name="submit" value="'.$name.'" class="subbutton" /> </br></br>';

这样你就可以引用你的属性,并且 HTML 解析器不会被文件名中的空格弄糊涂。

于 2012-09-12T15:48:42.970 回答
0

您需要确保将所有内容都放在文件名中最后一个句点的左侧,因为文件名可以包含多个。这使得爆炸成为一个不太理想的解决方案。以下代码将为您提供文件名,减去文件扩展名:

$file_name_without_extension = substr($full_file_name, 0, strrpos($full_file_name, "."));
于 2012-09-12T15:50:44.030 回答