我编写了一个小的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;
}
}
答案 0 :(得分: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解析器就不会被文件名中的空格搞糊涂了。
答案 1 :(得分:0)
您需要确保获取文件名中最后一个句点左侧的所有内容,因为文件名可以包含多个。这使得爆炸成为一种不太理想的解决方案。以下代码将为您提供文件名,减去文件扩展名:
$file_name_without_extension = substr($full_file_name, 0, strrpos($full_file_name, "."));