채택완료

php구문 날짜표시

php알못입니다..

 

preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb['mb_intercept_date']);

 

요렇게 되어 있잖아요~

 

이걸 그냥 2022.02.22 이런식으로 하려고 하는데

년, 월, 일만 지우고 점붙이면 되는건지

1년, 2월, 3월 여기 숫자(1,2,3)는 왜 붙어 있는건가여ㅠㅠ

|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트

preg_replace() 함수는 문자열을 정규식으로 치환할때 사용하는 함수입니다.
([0-9]{4})([0-9]{2})([0-9][2]} 의 의미는 ()괄호를 기준으로 1, 2, 3으로 구역을 나눈것이고
그 안에 {}괄호안의 숫자는 4자리, 2자리, 2자리 라는 의미입니다.

즉 DB필드상에 값은 20220222로 입력되어 있지만,

그 사이에 년, 월, 일이라는 문자열을 추가하기위해 사용된 함수입니다.

 

1년, 2월, 3월처럼 앞에 숫자가 붙어있는 의미는

위에 ()괄호에서 구역으로 나눈, 1구역, 2구역, 3구역이라는 의미입니다.

즉 1구역 2022, 2구역 02, 3구역 22가 됩니다.

그렇기때문에 2022년 02월 22일로 함수에서 치환해서 출력되는것 입니다.


2022.02.22식으로 처리하려면,
"\\1. \\2. \\3." 으로 수정하시면됩니다.
다만 중간에 띄어쓰기가 있으면 공백도 지우시면됩니다.

답변에 대한 댓글 1개

([0-9]{4})([0-9]{2})([0-9][2]} > ( ) 순서대로 1, 2, 3

 

echo preg_replace('/([0-9]{4})([0-9]{2})([0-9]{2})/', '$1.$2.$3', $mb['mb_intercept_date']);

또는

echo implode('.', sscanf($mb['mb_intercept_date'], '%4s%2s%2s'));

답변에 대한 댓글 1개

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