0

私はPDFを生成し、FPDFを使用して動的に自分のWebサイトでユーザーに電子メールで送信しています。ただし、生成されたPDFの名前には、スラッシュとプラス記号(+、/、\、[、])などが含まれているため、次のエラーが発生します。

fopen:( Unable to find the file or directory )  

スラッシュとブレースを削除するとすぐに、PDFが正常に生成され、電子メールで送信されます。

ファイル名を処理するためのソリューションが必要ですか?ファイル名は動的に作成されるので、変更するのは私の手にはありませんか?したがって、最初にPDFファイル名からこれらの特殊文字をすべて削除してから、FPDF出力に送信する必要があると思います。しかし、これを行う方法は?

4

3 に答える 3

2

あなたができるurlencode

 file_put_contents(urlencode('asd#$%21234 /&11 /!@##$$%&&*()_'), 'test');

しかし、それからあなたは奇妙な文字を手に入れます。

または、許可された文字を削除して残すことができます

 file_put_contents(preg_replace('/[^A-Za-z0-9_\-]/', '','asd#$%21234 /&11 /!@##$$%&&*()_'), 'test');
于 2012-10-05T10:38:14.257 に答える
1

スラッシュはファイルパスの決定にも使用されるため、ファイル名には使用できないと思います。たとえば、foo / bar.phpという名前のファイルは、実際にはbar.phpという名前のファイルですが、fooフォルダーにあります。

回避策は、最初にfooディレクトリを作成することです。次に、「foo / bar.php」ファイルを要求すると、fooディレクトリからbar.phpファイルを取得します(テストされていません)。

または、不要な文字をすべて削除することもできます。私のプロジェクトでは、これを使用してテキストを「正規化」します。

$ string = preg_replace('#[^ a-z0-9] +#'、'-'、$ string);

于 2012-10-05T10:31:20.957 に答える
1

OWASP ESAPI4PHPライブラリには、ファイル名やその他のタイプのデータ用の非常に適切なサニタイザーがいくつかあります。

ファイル名の制限の比較も参照してください。

于 2012-10-05T10:50:27.310 に答える