공백과 같은 파일 이름 (예 : ,
, (
, )
, !
등)이있는 이전 파일을 PHP를 통해 삭제해야합니다. Classic unlink($filename)
은이 파일들에 대해 작동하지 않습니다. 파일 이름을 언 링크 기능과 파일 시스템을 허용하는 파일 이름으로 변환하려면 어떻게해야합니까? Solaris 시스템에서 실행 중이며 다른 시스템에 액세스 할 수 없습니다.파일 이름에 특수 문자가있는 파일 삭제
3
A
답변
2
$filename
을 어떻게 구성하고 있습니까? unlink는 일반 문자를 이스케이프 처리 할 때 특수 문자가있는 파일 이름에서 작동해야합니다. 예 : this has, various/wonky !characters in it
의 이름을 가진 파일의
$filename = 'this has\, various\/wonky \!characters in it';
unlink($filename);
작동합니다.
0
Linux에서 나는 "rm ./filename"과 같은 절대 경로를 사용하는 것이 점 슬래시입니다.
이스케이프 문자를 사용할 수도 있습니다. "rm \ -filename"은 - 백스 캐쉬 하이픈과 같습니다.
1
unlink는 유효한 문자열을 허용하며 해당 문자열의 파일을 삭제하려고 시도합니다.
unlink('/home/user1/"hello(!,');
아마도 특정 문자를 올바르게 이스케이프 처리하지 못하고 있습니다.
1
당신은 모든 필요한 파일을 찾아 RegexIterator 사용하여 연결을 해제 할 수 있습니다 : ('.')이 코드는 재귀 적으로 현재에서 모든 디렉토리를 통과
<?php
$dir = new RecursiveDirectoryIterator('.');
$iterator = new RecursiveIteratorIterator($dir);
$regex = new RegexIterator($iterator, '/(^.*[\s\.\,\(\)\!]+.*)/', RecursiveRegexIterator::GET_MATCH);
foreach ($regex as $file) {
if (is_file($file[0])) {
print "Unlink file {$file[0]}\n";
unlink($file[0]);
}
}
및/(^ '정규식에 의해 모든 파일과 일치합니다. [\ s \ ,.()!] +.)/'를 입력 한 다음 삭제하십시오.
관련 문제
- 1. mysql 이름에 특수 문자가있는 데이터베이스 만들기
- 2. 파일 이름에 유니 코드 문자가있는 TagLib 파일 열기
- 3. 파일 이름에 멀티 바이트 문자가있는 파일을 삭제하는 방법은 무엇입니까?
- 4. 특수 문자가있는 URL이 작동하지 않습니다.
- 5. GIT로 SVN 마이그레이션 : 특수 문자가있는 잘못된 파일 이름
- 6. 파일 이름에 특수 문자가있는 파일을 열 수 없으면 Java를 수정하는 방법은 무엇입니까?
- 7. 플래시 업 로더 (Uploadify 및 SwfUpload) - 파일 이름에 특수 문자가있는 문제
- 8. PHP는 특수 문자가있는 파일 이름을 읽을 수 없습니다!
- 9. 이름에 특수 문자가있는 ColdFusion의 쿠키 값은 어떻게 읽습니까?
- 10. 특수 문자가있는 xpath 속성
- 11. 특수 문자가있는 Ajax 응답
- 12. FSRef에서 특수 문자가있는 경로를 읽을 수 없습니다.
- 13. C# 파일 삭제
- 14. MOSS 사이트 모음 문서 - 파일 이름에 특수 문자 제한
- 15. 자바 스크립트에서 파일 삭제
- 16. 파이썬 - 파일 이름에 공백이
- 17. 파일 이름에 querystring이있는 FileStream?
- 18. 파일 이름에 문자열 찾기
- 19. 삭제 파일
- 20. 파일 삭제
- 21. 파일 이름에 슬래시가있는 파일 저장 - objective-c
- 22. php : 파일 이름에 공백이없는 ftp_put 업로드 파일?
- 23. 특수 문자가있는 SQL 쿼리 - 처리 방법은 무엇입니까?
- 24. 이진 파일 특수 문자
- 25. jQuery.Get, 특수 문자가있는 매개 변수
- 26. Lucene.net에 특수 문자가있는 정확한 구문
- 27. PHP에서 특수 문자가있는 정규 표현식
- 28. Perl/mod_perl : 특수 문자가있는 경로에 모듈을 매핑하십시오.
- 29. C에서 파일 삭제
- 30. 파일 이름에 괄호를 이스케이프 처리합니다.
파일 이름이 readdir 명령에서 출력됩니다. 디렉토리의 파일이 id 데이터베이스에 사용되는지 비교합니다. 그렇지 않으면 삭제하십시오. 이 파일 이름을 벗어날 수는 없지만 자동으로 이스 페이스하는 방법이 있습니까? 나는 "ž ľ č š"와 같은 cp-1250 문자가있을 수 있다고 덧붙여 야합니다 ... – gadelat
쉘 메타 문자가 포함 된 파일 이름을 다루는 경우에는 그 파일을 벗어나야합니다. Unlink는 파일 이름의'/'가 실제로 파일 이름의 일부이며 디렉토리 분리 기호가 아니라는 것을 알지 못할 것입니다. –
cp-1250 문자는 문제가되지 않아야합니다. PHP 및/또는 glibc가 다른 코드 페이지/문자 세트에서 작동하는 경우가 아니면. "외국"문자 세트의 악센트 부호가있는 문자 중 하나가 우연히'/'와 같은 쉘 메타 문자 중 하나에 매핑 될 수 있지만 그 다음에 사각형으로 돌아갈 가능성이 있습니다 (그렇지만은 않을 것입니다). –