0

ディレクトリからファイル名を読み取り、explodeを使用して拡張子を削除し、phpページにファイル名を表示する小さな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

ファイル名には複数のピリオドを含めることができるため、ファイル名の最後のピリオドの左側にあるすべてのものを確実に取得する必要があります。これにより、explodeは理想的とは言えないソリューションになります。次のコードは、ファイルの名前からファイル拡張子を差し引いたものです。

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