2017-01-14 2 views
-2

파일 이름을 md5로 변환하는 데 문제가 있습니다.md5 캔트 파일 이름 엔티티 변환

20072437_60-0001 # 2013년 12월 7일^11.41.23.jpg

하지만 '#'을 가지고 '^'의 경우는 작업을 나던 :

나는 파일 이름이 파일 이름. '#'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; 
?> 

이 출력됩니다 $ 경우 인라인 = 사실 : -

0f068b6cd39ea23fc73c5c51ea08da8f.jpg 

$ 만약 인라인 = 거짓 : -

0f068b6cd39ea23fc73c5c51ea08da8f-big.jpg 

당신은 http://sandbox.onlinephpfunctions.com/code/10b6a2148b44601c3aacdc009336b0cde7989109

@ 예를 볼 수 있습니다
+0

나는 그것이 효과가있을 것이라고 확신하지만, 그것은 확장자가 "with"인 파일을 md5'ing하고 추가 확장자를 가진 md5를 출력하고 이것이 그들이 원하는 것을 확신 할 수 없다. 아마도 코드가 실패하는 이유 일 것입니다. –

+0

나는 그들이 질문을 조금 더 명확하게 할 필요가 있다고 생각한다. 코드는 그대로 작동한다. –

+0

아, 전적으로 동의합니다. –