php爆炸问题

时间:2012-09-12 15:44:09

标签: php html explode submit-button

我编写了一个小的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;
            }
        }

2 个答案:

答案 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, "."));