2017-01-14 2 views
-2

ファイル名をmd5に変換する際に問題があります。md5 cantファイル名のエンティティを変換する

20072437_60-0001#2013年12月7日^ 11.41.23.jpg

しかし、私は '#' を持っていると '^' であれば、それは仕事をdoesntの:

私は、ファイル名持っていますファイル名。 どうすれば '#' nad '^'を削除せずに動作させることができますか?

マイコード:

if ($inline === true) { 
     $thumbname = md5($file).'.jpg'; 
    } else { 
     $thumbname = md5($file).'-big.jpg'; 
    } 
+0

なぜ私はこれらの文字が最初に許可されたのか不思議です。 –

+1

どのようなエラーが表示されますか? –

+0

には、 –

答えて

0

次のコードは、私のために完璧に動作?

<?php 
$inline = true; 
$file = '20072437_60-0001#12-07-2013^11.41.23.jpg'; 

if ($inline === true) { 
     $thumbname = md5($file).'.jpg'; 
    } else { 
     $thumbname = md5($file).'-big.jpg'; 
    } 

echo $thumbname; 

出力: -

960f23e66bdfdff1d10a53f4957387f8.jpg 

これを行うための別の方法(私はあなたが探していると思う)

が最後の小数点の前にeveythingを取得する関数を作成することです: -

function reverse_strrchr($haystack, $needle) 
{ 
    $pos = strrpos($haystack, $needle); 
    if($pos === false) { 
     return $haystack; 
    } 
    return substr($haystack, 0, $pos); 
} 

最終結果が表示されます以下のような: -

<?php 

function reverse_strrchr($haystack, $needle) 
{ 
    $pos = strrpos($haystack, $needle); 
    if($pos === false) { 
     return $haystack; 
    } 
    return substr($haystack, 0, $pos); 
} 

$inline = false; 
$file = '20072437_60-0001#12-07-2013^11.41.23.jpg'; 

$newFile = reverse_strrchr($file, '.'); 

if ($inline === true) { 
    $thumbname = md5($newFile).'.jpg'; 
} else { 
    $thumbname = md5($newFile).'-big.jpg'; 
} 

echo $thumbname; 
?> 

この意志出力$インライン= trueの場合: - :あなたはhttp://sandbox.onlinephpfunctions.com/code/10b6a2148b44601c3aacdc009336b0cde7989109

@例を見ることができます

0f068b6cd39ea23fc73c5c51ea08da8f-big.jpg 

-

0f068b6cd39ea23fc73c5c51ea08da8f.jpg 

$インラインが= falseの場合

+0

私はそれがうまくいくと確信していますが、拡張子付きの "md5"というファイルをmd5'ingして、追加の拡張子を持つmd5を出力しています。おそらく彼らのコードが失敗しているのだろう。 –

+0

私は彼らが少し質問をより明確にする必要があると思います。コードはそのまま動作します。 –

+0

ああ、私は全く同意します。 –

関連する問題