1
<div id="gallery">

<?php  

$directory = 'people';

$allowed_types=array('jpg','jpeg','gif','png');
$file_parts=array();
$ext='';
$title='';
$i=0;


foreach (glob($directory.'/*.{jpg,jpeg,png,gif}', GLOB_BRACE) as $file){
    if($file=='.' || $file == '..') continue;
    $file_parts = explode('.',$file);
    $ext = strtolower(array_pop($file_parts));
    $title = basename($file);
    $title = htmlspecialchars($title);
    echo '
    <div class="pic '.$nomargin.'" style="background:url(thumbs/'.$file.') no-repeat 50% 50%;">
    <a href="'.$file.'" title="whatever you want : '.$title.'" rel="pan1" target="_blank">'.$title.'</a>
    </div>';
    $i++;
}



?>
<div class="clear"></div>
</div>

これは、動的画像ギャラリーのコードサンプルです。ディレクトリ内のすべての画像を、別のフォルダのサムネイルとともに自動的に表示します。これが私の問題です。ファイル名に空白の文字または特殊文字を使用すると、ファイルがまったく表示されません。余分なテキストを書かずに画像の説明として画像のタイトルを使用したいので、空白や(ç、ö、ş)などの特殊文字を使用したいと思います。これを行う方法はありますか?ありがとう。

サンプル:http ://www.kursatkarabulut.com/galeriler/kopya.php

4

1 に答える 1

1

さまざまなオペレーティングシステムやファイルシステムのファイル名で有効な文字と無効な文字がすべてわかっているわけではありませんが、問題が発生する可能性がある文字や、プラットフォームによって異なる文字があることは知っています。私の個人的な推奨事項は、問題全体を回避することです。

ファイルのメタデータ(この場合はタイトル)をデータベースに保存してから、各タイトルをのようなシリアル番号の付いたファイルに関連付けるか、 urlencode()で生成されるよう159.jpgに、ファイル名をASCIIの小さなサブセットにエンコードすることを検討してください。

たとえば、ç.jpgurlencodedをとして保存し%C3%A7.jpg、次にurlDecode()だけを表示して...

最大ファイル名、場合によってはファイルパスの長さに注意してください。それらもプラットフォームごとに異なります。これは、長いファイル名を回避するため、データベースを使用するためのもう1つのポイントです。

于 2012-06-16T15:27:13.987 に答える