0

画像をデータベースに保存する Yii アプリを作成しています。今、この画像ファイル名をきれいにするphpまたはyii関数を検索しているので、後でURLで使用できます。

たとえば、アップロードした場合:

test image.jpg
testímage.jpg
tést ímage.jpg

私のデータベースでは、それらをtest-image.jpgまたは単にtestimage.jpgとして保存できます

他にどのような方法を使用しますか? 実名を使用していますか、それともタイムスタンプだけですか? 重複を避ける方法はどれだと思いますか?

ありがとう

4

1 に答える 1

0

個人的には元のファイル名を保持します。何かユニークなものが必要な場合は、最後にハッシュまたは行のIDを追加できます。私はそれがおそらく最後の10%パーセントのためであることを知っています、しかしファイル名が写真に示されているものを表すならば、あなたはSEOで得ることができます。

ファイル名を「クリーン」にするには、次のような関数を使用できます(PHP)。

function trim($value, $onlySingleSpaces = false, $to1Line = false) {

    $value  = trim($value);

    // change new lines and tabs to single spaces
    if ($to1Line !== false)
        $value = str_replace(array("\r\n", "\r", "\n", "\t"), ' ', $value);

    // multispaces to single whitespaces
    if ($onlySingleSpaces !== false)
        $value = ereg_replace(" {2,}", ' ',$value);

    return $value;

}

function removeAccent($value) { 

    $a  = array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','ÿ','Ā','ā','Ă','ă','Ą','ą','Ć','ć','Ĉ','ĉ','Ċ','ċ','Č','č','Ď','ď','Đ','đ','Ē','ē','Ĕ','ĕ','Ė','ė','Ę','ę','Ě','ě','Ĝ','ĝ','Ğ','ğ','Ġ','ġ','Ģ','ģ','Ĥ','ĥ','Ħ','ħ','Ĩ','ĩ','Ī','ī','Ĭ','ĭ','Į','į','İ','ı','IJ','ij','Ĵ','ĵ','Ķ','ķ','Ĺ','ĺ','Ļ','ļ','Ľ','ľ','Ŀ','ŀ','Ł','ł','Ń','ń','Ņ','ņ','Ň','ň','ʼn','Ō','ō','Ŏ','ŏ','Ő','ő','Œ','œ','Ŕ','ŕ','Ŗ','ŗ','Ř','ř','Ś','ś','Ŝ','ŝ','Ş','ş','Š','š','Ţ','ţ','Ť','ť','Ŧ','ŧ','Ũ','ũ','Ū','ū','Ŭ','ŭ','Ů','ů','Ű','ű','Ų','ų','Ŵ','ŵ','Ŷ','ŷ','Ÿ','Ź','ź','Ż','ż','Ž','ž','ſ','ƒ','Ơ','ơ','Ư','ư','Ǎ','ǎ','Ǐ','ǐ','Ǒ','ǒ','Ǔ','ǔ','Ǖ','ǖ','Ǘ','ǘ','Ǚ','ǚ','Ǜ','ǜ','Ǻ','ǻ','Ǽ','ǽ','Ǿ','ǿ');

    $b  = array('A','A','A','A','AE','A','AE','C','E','E','E','E','I','I','I','I','D','N','O','O','O','O','OE','O','U','U','U','UE','Y','ss','a','a','a','a','ae','a','ae','c','e','e','e','e','i','i','i','i','n','o','o','o','o','oe','o','u','u','u','ue','y','y','A','a','A','a','A','a','C','c','C','c','C','c','C','c','D','d','D','d','E','e','E','e','E','e','E','e','E','e','G','g','G','g','G','g','G','g','H','h','H','h','I','i','I','i','I','i','I','i','I','i','IJ','ij','J','j','K','k','L','l','L','l','L','l','L','l','l','l','N','n','N','n','N','n','n','O','o','O','o','O','o','OE','oe','R','r','R','r','R','r','S','s','S','s','S','s','S','s','T','t','T','t','T','t','U','u','U','u','U','u','U','u','U','u','U','u','W','w','Y','y','Y','Z','z','Z','z','Z','z','s','f','O','o','U','u','A','a','I','i','O','o','U','u','U','u','U','u','U','u','U','u','A','a','AE','ae','O','o');

    return str_replace($a, $b, $value);

}

// trims, removes whitespaces, double "-", accents and stuff … :)
function clean($value) {

    return ereg_replace("-{2,}", '-', ereg_replace("_{1,}", '-', preg_replace( array('/[^a-zA-Z0-9 -_]/', '/[&]+/', '/[ ]+/', '/^-|-$/'), array('', '', '-', ''), removeAccent( trim($value, true, true) ) ) ) );

}
于 2012-06-24T21:37:44.617 に答える