2013-05-28 3 views
1

PHP에서 ZipArchive 라이브러리를 사용하여 Zip 아카이브를 생성합니다. 잘 작동하지만 파일 이름에 기호 (예 : '<' '>)가 허용되지 않으면 아카이브에이 파일이 없습니다.zip 아카이브에서 파일 이름을 마스킹하는 참 (쉬운) 방법

나는 모든 불필요한 기호를자를 수 있습니다.

나는 무의미한 싫어하는 자르기. 다른 방법 (가면이 될 수 있지만 '\'및 '^'는 효과가 없습니다)?

감사합니다.

+0

'\'및'^ '는 사용할 수 있습니까? – BlitZ

+0

@CORRUPT'\'- 아카이브에있는 경로는'^'-yes입니다. – Torv

+0

@Tovr 체크의 하단 부분이 그 때 대답 할 수 있습니다. – BlitZ

답변

1

당신은 이것에 대한 preg_replace()를 사용하려고 수 있습니다

<?php 
header('Content-Type: text/plain'); 

$file = '[email protected]#$%^&*()ashdgf$%^&*(.pdf'; 

$file = preg_replace('/[^a-z\.\-\_]/i', '_', $file); 

var_dump($file); 
?> 

쇼 :

<?php 
header('Content-Type: text/plain'); 

$file = 'folder\[email protected]#$%^&*()ashdgf$%^&*(.zip'; 

$file = preg_replace('/[^a-z\.\-\_\\\\^]/i', '_', $file); 

var_dump($file); 
?> 
: \^ 허용 부르는 것들은 인 경우

string(26) "__________ashdgf______.pdf" 

후 이것을 사용

쇼는 :

string(35) "folder\as_____^____ashdgf__^___.zip" 

이 표현 화이트리스트에서 다른 탈출 기호를 추가 할 수 있습니다.

+0

좋은 방법이지만 왜 '_' 대신'_'을 사용합니까? =) – Torv

+0

저는 아닙니다. '[^'와']'의 모든 것은 바뀌지 않습니다. 화이트리스트입니다. – BlitZ

+0

오, 내 실패. 나는 항상 코멘트가 오기 전에 매뉴얼을 읽을 것이다. – Torv