目次
方法1:GLOW()関数を使用します
方法2:opendir()関数を使用します
パス処理とセキュリティ
要約します
ホームページ バックエンド開発 PHPチュートリアル サブディレクトリから画像を取得し、Webページに表示する:PHPチュートリアル

サブディレクトリから画像を取得し、Webページに表示する:PHPチュートリアル

Oct 06, 2025 pm 06:03 PM

サブディレクトリから画像を取得し、Webページに表示する:PHPチュートリアル

この記事では、PHPを使用してサブディレクトリから画像を取得し、それらをWebページの相対パスに表示する方法について説明します。主に2つの方法をカバーしています。GLOB()関数とOpenDir()関数を使用し、それぞれの利点と短所を分析して、開発者がプロ​​ジェクトに最適な方法を選択できるようにします。同時に、プログラムの安定性とセキュリティを確保するために、パス処理とファイルタイプの検証の重要性が強調されています。

特定のディレクトリから画像を選択する必要があるニュースシステムまたはその他のアプリケーションを構築する場合、画像リストを動的に取得して表示する必要がある問題が発生することがよくあります。この記事では、この目標を達成するために一般的に使用される2つのPHPメソッドを導入し、ストレージのために相対パスで画像を取得し、データベースでの後続の使用方法に焦点を当てます。

方法1:GLOW()関数を使用します

GLOB()関数は、パターンマッチングに基づいてファイルを見つけることができます。これはシンプルで効率的な方法であり、特に既知のディレクトリ構造に適しています。

 'を使用します。 Basename($ image)。 '';
    } それ以外 {
        //サポートされていないファイルタイプをスキップし続けます。
    }
}
?>

コード説明:

  1. $ image_root = 'Assets/Images/NewsImages/';:画像ストレージのルートディレクトリを定義します。
  2. $ files = glob($ image_root。 '*
  3. pathinfo($ image、pathinfo_extension):ファイル拡張子を取得します。
  4. in_array($ ext、$ supported_file):ファイルタイプがサポートリストにあるかどうかを確認します。
  5. echo '';:出力html

注:

  • $ image_root変数の値が実際のディレクトリ構造と一致することを確認してください。
  • Glob()関数はオペレーティングシステムに依存しており、SolarisやAlpine Linuxなどの一部の非GNUシステムに制限がある場合があります。

方法2:opendir()関数を使用します

OpenDir()関数はディレクトリハンドルを開き、DeadDir()関数を使用してディレクトリ内のファイルを読み取ることができます。この方法はより柔軟ですが、コードは比較的複雑です。

 'を使用します。 Basename($ image)。 '';
            }
        }
    }

    //ディレクトリハンドルを閉じます閉じている($ハンドル);
}
?>

コード説明:

  1. Opendir($ image_root):指定されたディレクトリを開きます。
  2. Readdir($ handle):ディレクトリハンドルからエントリをお読みください。
  3. $ image = $ image_root。 $ entry;:完全なファイルパスを構築します。
  4. clositir($ handle):ディレクトリハンドルを閉じてリソースをリリースします。

注:

  • OpenDir()関数を使用するには、リソースの漏れを避けるために、ディレクトリハンドルを手動で閉じる必要があります。
  • 「。」 「..」ディレクトリは、それぞれ現在のディレクトリと親ディレクトリを表すループで除外する必要があります。

パス処理とセキュリティ

どの方法を使用しても、次のポイントに注意を払う必要があります。

  • 相対パスvs絶対パス:この記事の焦点は、相対パスの使用にあります。データベースに保存され、その後使用されると、パスのルートが正しいことを確認してください。
  • ファイルタイプの確認:悪意のあるファイルのアップロードを防ぐために、ファイルタイプを必ず確認してください。
  • ディレクトリトラバーサル権限: PHPスクリプトが指定されたディレクトリにアクセスする許可を持っていることを確認してください。

要約します

この記事では、PHPを使用してサブディレクトリから画像を取得し、Webページに表示する2つの方法を紹介します。 Glob()関数は簡潔で効率的であり、既知のディレクトリ構造に適しています。 OpenDir()関数は、より柔軟性があり、より粒状制御が必要な状況に適しています。選択する方法は、特定のプロジェクト要件に依存します。選択した方法に関係なく、プログラムの安定性とセキュリティを確保するために、パス処理とファイルタイプ検証に注意を払う必要があります。

以上がサブディレクトリから画像を取得し、Webページに表示する:PHPチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

メールアドレスがPHPで有効かどうかを確認する方法は? メールアドレスがPHPで有効かどうかを確認する方法は? Sep 21, 2025 am 04:07 AM

usefilter_var()tovalidateemailsyntaxandcheckdnsrr()toverifydomainmxrecords.example:$ email = "user@example.com"; if($ email、filter_validate_email)

PHPでオブジェクトの深いコピーまたはクローンを作成する方法は? PHPでオブジェクトの深いコピーまたはクローンを作成する方法は? Sep 21, 2025 am 12:30 AM

useunserialize(serialize($ obj))fordeepcopying whenalldataisserializable;それ以外の場合は、__clone()tomaniallyduplicatededededededavoidsharedReferenceを実装します。

MySQL条件集計:ケースステートメントを使用して、フィールドの条件合計とカウントを実装する MySQL条件集計:ケースステートメントを使用して、フィールドの条件合計とカウントを実装する Sep 16, 2025 pm 02:39 PM

この記事では、MySQLで条件付き集計を実行するためにケースステートメントを使用して特定のフィールドの条件付き合計とカウントを実現する方法について説明します。実用的なサブスクリプションシステムケースを通じて、レコードステータス(「終了」や「キャンセル」など)に基づいてイベントの合計期間と数を動的に計算する方法を示し、それにより、複雑な条件集計のニーズを満たすことができない従来の合計関数の制限を克服します。チュートリアルでは、左の結合の可能性のあるヌル値を扱う際の合体の重要性を詳細に機能させて、sum機能のケースステートメントの適用を分析します。

PHPで2つの配列をマージする方法は? PHPで2つの配列をマージする方法は? Sep 21, 2025 am 12:26 AM

usearray_merge()tocombinearrays、urblitingduplicatestringkeysandreindexingnumerickeys; forsimplerconcatenation、inthphp5.6、usethesplatoperator [... $ array1、... $ array2]。

PHPプロジェクトで名前空間を使用する方法は? PHPプロジェクトで名前空間を使用する方法は? Sep 21, 2025 am 01:28 AM

NamesSpacesInphporganizeCodeandPreventnamingConflictsByGroupingClasses、インターフェイス、関数、およびコンテンダントアンダースピフィクティフィクティフィクティフィクティフィクショナル

PHPを使用してデータベースでレコードを更新する方法は? PHPを使用してデータベースでレコードを更新する方法は? Sep 21, 2025 am 04:47 AM

toupdateadatabaserecordinphp、firstconnectusingpdoormysqli、thenuseprepreadedStatementStoeaseaseesecuresQlupDateQuery.example:$ pdo = newpdo( "mysql:host = localhost; dbname = your_database"、$ username、$ username、$ sibsfar

PHPの魔法の方法とは何ですか? `__call()`および `__get()`の例を提供します。 PHPの魔法の方法とは何ですか? `__call()`および `__get()`の例を提供します。 Sep 20, 2025 am 12:50 AM

the__call()メソッドは、customhandlingbyacceptingthemetodnameandarguments、ashownwhencollingdsslikesayhello()

PHPでファイル拡張機能を取得するにはどうすればよいですか? PHPでファイル拡張機能を取得するにはどうすればよいですか? Sep 20, 2025 am 05:11 AM

usepathinfo($ filename、pathinfo_extension)togetthefileextension; itreliailailavaliavelyhandlesmultipledotsendedgecases、returningtheextension(例えば、 "pdf")oranemptystringifnoneexists。

See all articles