glob()
정말 준 정규식 엔진입니다 :) 누군가가 나를 도와 주면
oldFileName_[one or more digits]x[one or more digits]_thb.oldFileNameExtension
나는 매우 감사하게 될 것입니다 : 나는 그들의 이름은 파일을 검색 할 수 있습니다. 워드 프로세서에 대한 코멘트에서, 그것은 ?
과 *
수 있습니다 :
글로브는 메타 문자와 한정사 사이의 조화의 종류처럼 행동 두 가지 특수 기호를 사용합니다. 이 두 문자는 * 및?
? * 표시 A/
제외한 모든 문자의 1 일치 도움이된다면 A/
제외하고는 0 또는 문자의 자세한 내용을 일치.의 PCRE 동등한로 * 생각 * 및? 점의 PCRE의 동등 (.)
이것은 당신이 glob()
에 표현 _[0-9]+\x[0-9]+_thb.
을 사용할 수 없음을 의미합니다. 대신, 전체 디렉토리를 보면 그것이 preg_match()
와 일치하는 경우 볼 수 있습니다
$glob = glob('/path/to/dir/*');
foreach($glob as $file) {
if(preg_match('/_\d+x\d+_thb\./', $file)) {
// Valid match
echo $file;
}
}
이
glob(/path/to/dir/*);
에서 그 실현의
*
이 일치하지 않는
/
때문에이 서브 디렉토리의 모든 파일을받지 않습니다. 해당 경로의 모든 파일과 디렉토리를 반복합니다. 더 깊게 가고 싶다면 재귀 함수를 만들어야합니다.
주 나는 청소 당신의 expression :
_\d+x\d+_thb\.
\d
거의 동일 [0-9]
(그것은 또한 등 아랍어 숫자 문자를 포함), 당신이 (그래서 \x
를) x
탈출하지 할 필요가 없습니다, 당신이 원하는 기간 (\.
)을 탈출하십시오.
출처
2014-05-09 14:14:54
Sam
안녕하세요, 내 글램 댓글입니다. 내 하루가 만들어졌습니다, hoozah! :) –
@CrayonViolent 하하, 내가 본 것 중 더 나은 PHP 문서 주석 중 하나였습니다 - 너무 많은 수의 upvotes도있었습니다. 이 질문을 우연히 만난다면 당신은 glob() 사용자 여야합니다;) – Sam
응답 주셔서 감사합니다 :) – user3025978