반응형
기본 함수들
주요 PHP 정규식 함수
- preg_match(): 패턴 일치 여부 확인 (첫 번째 일치만 반환)
- preg_match_all(): 모든 패턴 일치 검색
- preg_replace(): 패턴 일치 문자열 치환
- preg_split(): 패턴으로 문자열 분할
정규식 패턴 작성법
정규표현식은 구분자(일반적으로 '/')로 감싸며, 선택적으로 플래그를 추가할 수 있습니다:
$pattern = '/검색패턴/플래그';
실용적인 예제와 설명
1. 이메일 유효성 검사
function validateEmail($email) {
$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';
if (!preg_match($pattern, $email)) {
return false;
}
return true;
}
// 사용 예
$email = "test@example.com";
if (validateEmail($email)) {
echo "유효한 이메일입니다";
} else {
echo "유효하지 않은 이메일입니다";
}
2. 안전한 문자열 분할
$text = "PHP,Python,JavaScript";
$pattern = '/,/';
$result = preg_split($pattern, $text, -1, PREG_SPLIT_NO_EMPTY);
print_r($result);
3. 전화번호 형식 변환
function formatPhoneNumber($phone) {
// 숫자만 추출
$phone = preg_replace('/[^0-9]/', '', $phone);
// 패턴에 따라 형식화
if (strlen($phone) === 11) {
return preg_replace('/(\d{3})(\d{4})(\d{4})/', '$1-$2-$3', $phone);
}
return false;
}
$phone = "01012345678";
echo formatPhoneNumber($phone); // 출력: 010-1234-5678
자주 사용되는 메타문자
기본 메타문자
- \d: 숫자 [0-9]
- \w: 단어 문자 [a-zA-Z0-9_]
- \s: 공백 문자
- .: 줄바꿈을 제외한 모든 문자
- ^: 문자열의 시작
- $: 문자열의 끝
수량자
- +: 1회 이상
- *: 0회 이상
- ?: 0회 또는 1회
- {n}: 정확히 n회
- {n,}: n회 이상
- {n,m}: n회 이상 m회 이하
플래그 옵션
주요 플래그
- i: 대소문자 구분 안함
- m: 다중행 모드
- s: .이 개행 문자도 포함하도록 함
- u: UTF-8 모드 (한글 등 멀티바이트 문자 처리)
- x: 공백 무시 및 주석 허용
실전 활용 예제
1. 보안을 고려한 한글 이름 검증
function validateKoreanName($name) {
if (mb_strlen($name) > 20) return false;
return preg_match('/^[가-힣]{2,20}$/', $name);
}
$name = "홍길동";
if (validateKoreanName($name)) {
echo "올바른 이름 형식입니다";
}
2. 안전한 숫자 추출
function extractNumbers($text) {
if (preg_match_all('/\d+/', $text, $matches)) {
return $matches[0];
}
return [];
}
$text = "가격은 12,345원입니다";
$numbers = extractNumbers($text);
print_r($numbers); // Array([0] => 12 [1] => 345)
반응형
'PHP' 카테고리의 다른 글
PHP 로 특정 아이피 차단 (0) | 2024.11.27 |
---|---|
특정날짜 입력 시 요일 출력 (0) | 2024.11.25 |
PHP 배열 함수 정리 (0) | 2024.11.21 |
유튜브 주소에서 유튜브 영상 아이디 가져오기 (1) | 2024.11.15 |
두 날짜 사이의 날짜들을 배열로 반환 하는 함수 (0) | 2024.11.14 |