- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP パスからファイル名を抽出する正規表現)
PHPでパスからファイル名を抽出する方法とは?
このQ&Aのポイント
- PHPを使用してクライアントサイドのフルパスからファイル名を抽出する方法を知りたいです。
- 画像をアップロードするスクリプトを考えているが、半角英数以外のファイル名の場合にはエラー表示を出したいです。
- 現段階で自分にできることをやろうと思っており、ファイル名の抽出方法やエラー表示の実装方法についてご教授願います。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
最近のセキュリティのしっかりしたブラウザでは、input type="file" に入力されたパス+ファイル名のうちファイル名しか送信しないようになっています。 もしパス区切り文字が入っていたら、古いブラウザの利用者なので、弾くくらいの気持ちでよいかと思います。(セキュリティに無関心な利用者ではウィルスたっぷりのファイルの可能性も高いんじゃないかとか思うので) ということで、これだけでいいのでは? if(! preg_match ( '/^[0-9a-zA-Z.\-]+$/', $file_name ) ){ print "error filename"; exit; } >なんで1.ができないのか 大概のサーバーは、unix系(linux freebsd etc)なので、これらのOSでは、ファイル名に多バイト文字を使えないということだったと思いましたけど。
お礼
回答ありがとうございます。 確かに、echoにて$file_name=$_FILES['user_picture']['name'];を出してみたところ、フルパスではなくファイル名のみが表示されました。 私の思い込みでした。 すみません。 正規表現ありがとうございます。 今回、年内にサイトをアップロードすることを目標としていまして、正規表現についてはまだ勉強していないのですが、今後これについてはしっかり勉強し、hrm_mmmさんのご恩を他の方に返すように努力します。 1.に関してもご回答ありがとうございます。 今、いただいた正規表現でチェックしましたところ、意図した通りに動かすことができました。 重ね重ねありがとうございました。