정규식 질문..
본문
안녕하세요! 오랜만에 질문 드리네요~
1644081249_3ff48c23ef6473cee37f_190x190_thumb.jpg
이렇게 된거 이미지가 있는데 이걸 정규식을 어떻게 표현해야될까요..
답변 3
1644081249_3ff48c23ef6473cee37f_190x190_thumb.jpg
↓
\d+_[a-f0-9]+_\d+x\d+_thumb\.(?:jpe?g|png|gif|bmp|webp)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ PHP Manual > Function Reference > Text Processing > PCRE > PCRE Patterns > Pattern Syntax
- https://www.php.net/manual/en/reference.pcre.pattern.syntax.php
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- https://www.php.net/manual/en/regexp.reference.repetition.php
- https://www.php.net/manual/en/regexp.reference.character-classes.php
- https://www.php.net/manual/en/regexp.reference.escape.php
\d+ ... 숫자 한 글자 이상
[a-f0-9]+ ... abcdef0123456789 한 글자 이상
\. ... 단순 마침표. [그냥 . 하면 모든 문자]
jpe?g ... jpg jpeg 매칭
- https://www.php.net/manual/en/regexp.reference.subpatterns.php
(jpe?g|png|gif|bmp|webp) ... jpg jpeg png gif bmp webp 중 하나
(?:패턴) ... 캡처하지 않음
<?php
$text = '1644081249_3ff48c23ef6473cee37f_190x190_thumb.jpg
1644120690_3ff48c23ef6473cee37f_400x300_thumb.png';
preg_match_all('/(\d+)_[a-f0-9]+_(\d+)x(\d+)_thumb(\.(?:jpe?g|png|gif|bmp|webp))/', $text, $matches);
foreach ( $matches[0] as $k=>$filename ) {
$datetime = date('Y-m-d H:i:s', $matches[1][$k]);
$width = $matches[2][$k];
$height = $matches[3][$k];
$extension = $matches[4][$k];
echo '파일명: ', $filename, '<br>';
echo '생성일: ', $datetime, '<br>';
echo '크기: ', $width, 'x', $height, 'px<br>';
echo '확장자: ', $extension, '<br><br>';
}
/* 실행 결과
파일명: 1644081249_3ff48c23ef6473cee37f_190x190_thumb.jpg
생성일: 2022-02-06 02:14:09
크기: 190x190px
확장자: .jpg
파일명: 1644120690_3ff48c23ef6473cee37f_400x300_thumb.png
생성일: 2022-02-06 13:11:30
크기: 400x300px
확장자: .png
*/
일단 "_thumb.jpg" 가 기본일 것 같으니
look ahead를 사용해서 찾으면 될것 같습니다.
[0-9_a-z]+(?=_thumb.jpg)
위의 출력은 _thumb.jpg를 빼고 나오니 이 부분만 추가해서..
사이즈까지도 look ahead해 도 되고요.
!-->원하시는 내용을 적어야 삽질을 줄일 수 있습니다.
img file 명에서 어떤 부분이 필요해서 정규식을 쓰고 싶으신 것인지...