채택완료

정규식 질문입니다.

2021-12-07 (화) 17:48:09 2,018

/data/editor/2111/145ac6774604ae8d31c392ba622f3473_040059364307.jpg

여기에서

/data/editor/2111/ 를 지우고 싶습니다

다만 2111은 날짜라서 매번 글자가 달라지는데요

/ 이게 특수문자라서 어떻게 진행해야하는지 잘 이해를 못하겠습니다ㅠㅠ

|

답변 5개 / 댓글 2개

채택된 답변
+20 포인트
2021-12-07 (화) 19:00:34

* basename(), pathinfo() 등의 함수 이용이 더 편합니다만…

(패턴 다양한데) 그냥 간단하게 아래처럼 치환(제거)하면 됩니다.

Copy
$str = '/data/editor/2111/145ac6774604ae8d31c392ba622f3473_040059364307.jpg';

echo preg_replace('#/data/editor/\d+/#', '', $str);

// 결과 145ac6774604ae8d31c392ba622f3473_040059364307.jpg

감사합니다 도움이 되었습니다(--)(__)

2021-12-07 (화) 20:05:18

만일 저 같으면...

정규표현식 보다는 뒤에서부터 strrpos 로 문자열을 추적하여 / 의 위치를 찾아 더하기 1을 해주고

substr 로 추출해 내는 것이 가장 간명해 보입니다만...

Copy
<?php
$url = "/data/editor/2111/145ac6774604ae8d31c392ba622f3473_040059364307.jpg";
echo substr($url, strrpos($url, "/") + 1);
?>

답변에 대한 댓글 1개

감사합니다 도움이 되었습니다(--)(__)

파일명만 추출하고 싶으신거라면 굳이 정규식을 사용하지 않고 php 기준으로 explode 구분자를 "/'로 하여서 마지막 배열 값을 얻어내도 됩니다.

정규식에서 들어가는 문자는 \문자를 앞에 붙이시면 문자열로 인식하게 할 수 있습니다

\/ 이런식으로 활용하시면 됩니다

답변에 대한 댓글 1개

감사합니다 도움이 되었습니다(--)(__)

답변을 작성하려면 로그인이 필요합니다.