0

私は現在ドロップリストを作成していますが、ドロップリストに .txt 拡張子ファイルのみを含めたいとしましょう.php .jpg などの他の拡張子やその他の拡張子はドロップリストに含まれません。できるだけ簡単にするにはどうすればよいですか?

もう 1 つの質問は、フォルダーに .txt 拡張子ファイルがない場合にエラー メッセージが表示されるという警告を表示することです。そのため、フォルダ内に .txt ファイルがない限り、他の .jpg .php またはその他のファイルがあっても、警告が表示されます。

私に手を貸してくれる人はいますか?

これは私が行ったことですが、最後に.txtのないドロップリストのみが表示されますが、ドロップリストには他のランダムファイルが表示されます。

if(!(is_dir("./aaa")))
{
    die("Must create a folder first, sorry");
}

    $lists = scandir("./aaa");

    echo "<form action=\"./page2.php\" method=\"get\">";
    echo "<select>";

    foreach($lists as $list)
    {
    if(($list == ".") || ($list == ".."))
        {
        continue;
        }
    echo "<option value=\"";
    echo basename($list,".txt");
    echo "\">";
    echo basename($list,".txt");
    echo "</option>";
    }
    echo "</select>";
    echo "</form>";

editted は $hasTxt で substr を追加しました

<?php
if(!(is_dir("./aaa")))
{
    die("Must create a <strong>aaa</strong> folder first, sorry");
}
echo "<form action=\"./page2.php\" method=\"get\">";
echo "<select name=\"aaa\">";
    $aaa_files = scandir("./aaa"); 
$hastxt = false; 
foreach($aaa_files as $file_list) 
{
    if(($file_list == ".") || ($file_list == ".."))
    {
    continue;
    }
    if(strlen($file_list)>4 && strtolower(substr($file_list, -4))!='.txt')
    {
    continue;
    }
    else 
    {
    $hastxt = true; 
    echo "<option value=\"";
    echo basename($file_list,".txt");  
    echo "\">";
    echo basename($file_list,".txt");
    echo "</option>";
    }
}
echo "</select>";
echo "<br/><input type=\"submit\">";
echo "</form>";

if($hastxt == false) 
{
    echo "Must create text files first, sorry";
    die();
}
?>

これは、フォルダーに txt ファイルがない場合に、現在のスクリプトで発生することです。

ここに画像の説明を入力


これは、txtファイルがなくてももちろん矢印がない場合に私が実際に望んでいるものです

ここに画像の説明を入力

4

3 に答える 3

1

これを試してください、うまくいくことを願っています

<?php
    if(!(is_dir("./aaa")))
    {
        die("Must create a folder first, sorry");
    }

    $lists = scandir("./aaa");
    $i =0;
    foreach($lists as $list)
    {
        if (strstr($list, '.txt')) {
        $i++;
        }
    }
    if($i == 0){
        die("the folder does not have any .txt extension files");
    }

    echo "<form action=\"./page2.php\" method=\"get\">";
    echo "<select>";

    foreach($lists as $list)
    {
        if (strstr($list, '.txt')) {
            echo "<option value=\"".substr($list,0, -4)."\">".substr($list, 0,-4)."    </option>";
        }
    }
    echo "</select>";
    echo "</form>";
?>
于 2013-02-15T05:29:03.327 に答える
1

ファイル名をテストするには、PHP の substr() 関数を使用できます。

if(substr($filename, -3) == 'txt') {
  // show file
}

ここを参照してください: http://php.net/manual/en/function.substr.php

于 2013-02-15T05:27:11.210 に答える
1

最初の部分については、ディレクトリを続けるのと同じです。そして..、非テキストファイルで続けることができます:

if(strlen($list)>4 && strtolower(substr($list, -4))!='.txt') continue;

警告部分については、foreach の前にフラグを付けます

$hasTxt = false;

そして、無視しない入力を受け取るたびに true に設定します (つまり、if(unwanted) continue; の後)。

$hasTxt = true;

最後に、foreach の後で $hasTxt の値を確認し、必要に応じて使用します。

于 2013-02-15T05:27:34.387 に答える