-
[PHP] 정규표현식PHP 2024. 1. 5. 22:18
이번에는 PHP 정규표현식에 대해 알아보자.
정규표현식이 사용되는 곳
- 회원 가입 시 이메일 입력 형식 체크
- 비밀번호 생성 시 특정 조건 강제화
- 게시물의 URL 문자열에 자동 링크 걸기
- 특정 조건 문자열의 자동 치환
표현 방식
/정규표현식/
내장 함수
- preg_match() - 일치하는 문자 하나 찾기 (1차원 배열로 저장)
- preg_match_all() - 해당 문자 모두 찾기 (2차원 배열로 저장)
- preg_replace() - 찾은 문자열을 변경
/ /i 형태
i 를 정규표현식 뒤에 붙이게 되면 대소문자 구분 없이 하겠다는 키워드이다 (주로 검색에 사용)
$string = "Hello World"; $pattern = '/hello/i'; // 대소문자 구분 x preg 로 i 부착 $cnt = preg_match($pattern,$string, $result); // 해당 하면 1, 없으면 0 으로 리턴 echo $cnt;
//^ 형태
^는 표현식에서 찾을 문자 앞에 사용하며 뒤에 넣은 문자열로 시작하는 문자를 찾는다.
$string = "who is who"; $pattern = '/^who/'; //^ 는 who 로 시작하는 문자열 echo "<h3>before:</h3>"; echo $string; echo "<p> </p>"; echo "<h3>after:</h3>"; $replacement = "<span>who</span>"; echo preg_replace($pattern,$replacement,$string);
/$/ 형태
특정 문자열로 끝나는 거 찾기.
$string = "who is who"; $pattern = '/who$/'; //$ 는 who 로 끝나는 문자열 찾기 echo "<h3>before:</h3>"; echo $string; echo "<p> </p>"; echo "<h3>after:</h3>"; $replacement = "<span>who</span>"; echo preg_replace($pattern,$replacement,$string);
\ (이스케이프)
\ 는 만약 정규표현식 안에 flag 키워드에 포함되는 문자열을 넣을 경우 \을 넣어서 작성한다.
$string = "$12$ \-\ $25$"; $pattern = '/^\$/'; // \ 는 이스케이프 echo "<h3>before:</h3>"; echo $string; echo "<p> </p>"; echo "<h3>after:</h3>"; $replacement = "<span>!</span>"; echo preg_replace($pattern,$replacement,$string);
위에 코드에선 flag 키워드인 $ 를 정규표현식에 찾을 문자로 작성했다.
any .
any 는 어떤 문자든 상관없이 . 갯수에 맞게 모든 문자들을 찾는다.
$string = "Regular expressions"; $pattern = '/...../'; // -> 타겟에 문자를 .의 갯수에 맞쳐서 지정한 문자로 변경 만약 문자가 딱 떨어지지 않고 남은 문자는 그대로 냅둔다/ echo "<h3>before:</h3>"; echo $string; echo "<p> </p>"; echo "<h3>after:</h3>"; $replacement = "<span>=</span>"; echo preg_replace($pattern,$replacement,$string);
[ ]
[ ] 는 [ ]사이에 있는 문자열 중에 타겟 문자열에 맞는 모든 문자들을 바꾼다.
$string = "How do you do"; $pattern = '/[oy]/'; // []사이에 있는 문자열 중에 타겟 문자열에 맞는 모든 문자들을 바꾼다. echo "<h3>before:</h3>"; echo $string; echo "<p> </p>"; echo "<h3>after:</h3>"; $replacement = "<span>!</span>"; echo preg_replace($pattern,$replacement,$string);
[ ][ ]
[ ] [ ] 는 먼저 첫번째 [ ]사이에 있는 문자열을 찾은 후 뒤에 있는 문자가 두개 이상 포함되지 않으면 변경하지 않고 두개 이상 포함되면 변경한다.
$string = "How do you do"; $pattern = '/[oy][yow]/'; // 먼저 첫번째 []사이에 있는 문자열을 찾은 후 뒤에 있는 yow 가 들어가는 검증 후 들어간다면 바꾸고 두개 이상 포함되지 않으면 변경하지 않고 두개 이상 포함되면 변경한다. echo "<h3>before:</h3>"; echo $string; echo "<p> </p>"; echo "<h3>after:</h3>"; $replacement = "<span>!</span>"; echo preg_replace($pattern,$replacement,$string);
'PHP' 카테고리의 다른 글
[PHP] date (0) 2024.01.11 [PHP] 정규표현식 2 (0) 2024.01.11 [PHP] GET POST Request 를 form 에서 이용하기 (2) 2024.01.05 [PHP] GLOBALS (전역 함수) (2) 2024.01.04 [PHP] 내장함수, 사용자 정의 함수(function) (2) 2024.01.04