개발하다 보면 주문번호, 영수증번호, 송장번호 같은 ID를 생성할 때 항상 같은 자릿수로 맞춰야 한다. 예를 들어 1번 주문을 "000001"로 표시하고, 10000번 주문을 "010000"으로 만들어야 하는데, 이걸 제대로 모르면 문자열 함수들을 잔뜩 조합해서 복잡하게 처리한다. 다만 대부분의 개발자들은 PHP가 이걸 위해 만든 str_pad() 함수의 ···
배열의 모든 요소에 같은 작업을 적용해야 할 때, 대부분의 개발자는 foreach 루프를 쓴다. 다만 PHP의 array_map() 함수를 모르면, 불필요하게 길고 복잡한 코드를 작성하게 된다.이번에는 array_map()이 정확히 뭔지, 왜 필요한지, 어떻게 쓰는지 완벽하게 정리해서 소개하겠다. 함수형 프로그래밍 패턴으로 코드를 간결하게 만들고, 실무에서···
PHP 백엔드에서 데이터베이스 쿼리를 실행한 후 그 결과를 JSON API로 클라이언트에 전달할 때, DB의 snake_case 필드명을 그대로 노출해서 프론트엔드 개발자에게 지적을 받은 적이 있을 것이다. 다만 데이터가 중첩된 다차원 배열 구조일 때 모든 키 값을 손수 camelCase로 변경하는 유틸리티 함수를 제대로 작성해두지 않아 foreach 루프···
PHP 프로젝트를 진행하면서 외부 API 연동 결과나 복잡한 설정(Config) 데이터처럼 여러 단계로 중첩된 배열(Nested Array) 데이터를 다뤄본 경험이 있을 것이다.다만 매번 키의 존재 여부를 검증하기 위해 isset()을 무한 반복하거나 Null 합치기 연산자(??)를 남발하다가 코드 가독성이 급격히 떨어지고 예상치 못한 Warning을 마주···
PHP로 데이터베이스 조회 결과나 API 응답 데이터를 다루다 보면, 특정 필드(Key)를 기준으로 배열 데이터를 그룹화해야 하는 상황을 한 번쯤 경험해봤을 것이다.다만 PHP 표준 함수 라이브러리에는 array_column이나 array_map 등은 있지만, 정작 실무에서 가장 많이 필요한 array_group_by() 형태의 그룹화 함수가 제공되지 않아···
PHP로 파일 업로드 시스템이나 서버 디렉토리 용량 관리 기능을 개발하다 보면, 1048576이나 5368709120과 같은 순수 바이트(Byte) 단위를 1MB, 5GB처럼 사람이 읽기 쉬운 포맷으로 변환해야 하는 상황을 흔히 경험해봤을 것이다.다만 단순 나눗셈 연산이나 어설픈 if 조건문으로 이를 구현할 경우, KB부터 TB, PB까지 유연하게 대응하지···
관리자 페이지나 화면 모니터링 로그를 개발하다가 사용자의 이메일, 전화번호, 이름 같은 민감한 개인정보가 그대로 화면에 노출되는 상황을 경험해봤을까?관리자 페이지나 시스템 로그 파일에 개인정보를 날것(Raw Data) 그대로 남겨두는 것은 개인정보보호법 및 ISMS 인증 기준 위반일 뿐만 아니라 심각한 데이터 유출 사고로 이어질 수 있다. 다만 매번 화면을···
meta 태그란 사이트 문서 head 상에 삽입된 태그로 흔히 웹 문서 검색 시 해당 문서의 정보 데이터를 설정하는 역활을 한다. 이러한 meta 태그는 종류가 여러가지고 보통 검색 시에 활용하기도 하지만 특정 사이트 인증 및 설정 시에도 사용이 된다. 본래 PHP 에서는 메타태그를 가져올 수 있는 get_meta_tags() 함수가 제공이 되는데 이 함수···
이번에 소개할 서포트 함수는 HTML 소스코드에서 특정 태그의 속성값을 배열로 추출할 수 있는 함수다. 보통 이미지 태그에서 src 속성을 추출 하기위해 많이 사용하는 정규식이 있는데 해당 정규식을 조금 커스텀하여 모든 태그의 특정 속성들을 전부 가져올 수 있도록 개선해보았다. 사용방법 및 예제는 아래를 참고하길 바란다. get_tag_data_all 함수···
이번에 소개할 서포트 함수는 출력된 문서기준으로 HTML, CSS, JS, TEXT 코드들을 압축해 주는 함수다. 참고로 이 함수는 HTML 주석도 숨김처리를 해주나, /**/ 주석같은 경우 텍스트 압축 및 주석 치환 위치에 따라 소스코드가 이상하게 처리되는 경우도 있으니 참고하여 사용하기 바란다. text_compression 함수 - 소스코드 압축 fu···
이번에 소개할 서포트 함수는 서버내 디렉토리를 조회하여 정보를 배열로 보여주는 함수이다. 자세한 사용방법은 array_dir_filelist 함수내 주석을 참고하기 바란다. 생각해보니 작업하면서 사용할일이 거의 없기도 하지만 혹시나 필요할 경우 참고하여 사용하기 바란다. array_dir_filelist 함수 function array_dir_fileli···
MYSQL 에서 제공되는 내장함수중 PASSWORD 라는오래전부터 많이 사용되고 있는 함수가 있다. 이 함수는 단방향 암호화로 해독자체가 거의 불가능하기때문에 보안상으로는 상당히 좋다. 다만 키값으로 암호화가 되는게 아니기때문에 해독되어 알려진 비밀번호도 많이 존재한다고 한다. 뭐 보안을 위해서 개발자의 능력도 중요하지만 사용자가 비밀번호 보안을 신경쓰는···
글제목 선정이 조금 어려웠는데 말 그대로 사용자 정의 함수 1개를 선언하여 여러개의 함수를 재정의 후 사용할 수 있는 서포트 함수다. 나같은 경우 예전에 클래스로 컨트롤러 작업을 하다가 함수형태로도 사용하면 좋을 것 같아 따로 만들어서 계속 사용중이다. 아래는 method 함수와 예제이니 참고하여 사용하면 된다. method 함수 // method 함수 i···
PHP에서 다른 서버로 파일을 전송하는 방법에는 크게 CURL 통신과 소켓통신이 있다. 솔직히 회사에서 사용한다면 CURL 통신을 추천하지만 부득이하게 CURL 통신으로 안될경우 소켓통신을 사용하는것을 추천한다. 소켓통신이 사용하는 방법이 까다롭고, 서버에 따라 잘 안되는 경우도 있는것같다. 이번에 만든 함수같은 경우 전에 다른 서버에서 사용했던 함수였는데···
이번 헬퍼 함수는 문자열에서 숫자만 남기고 모두 삭제하는 함수이다. 옵션으로 INT 도 있으며 해당 INT를 추가할 경우 정수만 추출할 수 있다. 추가로 넣은 기능의 경우 마이너스 기능이며, 처음 시작이 하이픈(-) 일경우 뒤에 숫자의 경우 모두 마이너스로 표현이 된다. getNumber() 함수 - 숫자만 남기고 삭제하는 함수 function getNu···
데이터 암호화/복호화 시 사용하는 암호화 방식에는 가장 많이 사용하는 base64 암호화 방식이 있다. 주로 데이터 전송시 암호화 후 복호화 하는 형태로 많이들 이용하는데 이번편은 해당 함수가 bas64 암호화로 된 데이터인지 검증할 수 있는 함수이다. base64chk() 함수 /* $base64_str => base64 encode string *···
PHP 기본함수로 제공되는 mail 함수에서 파일첨부가 가능한것은 알고 있었지만 실제로 메일에 파일을 직접 첨부를 하여 사용할일이 거의 없었기에 별도로 커스텀하지는 않았다. 서버환경에따라 보내는 서버 와 메일을 받는 서버쪽 환경에 따라 대용량은 첨부가 안되기 때문에 대부분 보내는쪽 서버에 파일업로드하고, 인증권한 키값(키값, 유효기간) 생성하여 URL 링크···
이번에 소개할 함수는 JSON 데이터가 정상적인지 체크하는 함수로 , 체크 방식은 JSON 디코드시 발생되는 에러 결과값을 이용하여 체크하도록 되어있다. 함수정의와 사용 방법은 아래와 같다. isjson() 함수 function isjson($string){ json_decode($string); switch (json_last_error()) { case···