PHP에서 일반적으로 사용되는 이메일 확인문에 대한 설명
저자:Eve Cole
업데이트 시간:2009-06-06 18:17:18
PHP를 잘 공부한 사람이라면 이메일 확인을 위해 다음 문장을 알아야 한다고 생각합니다. 그러나 이를 실제로 이해하는 사람은 많지 않습니다.
<?php
if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[az]{2,3}$",$ 이메일)) {
echo "귀하의 이메일은 예비 검사를 통과했습니다.";
}
?>
이 문장에서 가장 먼저 할 일은 eregi 함수를 적용하는 것인데, 꽤 이해하기 쉽습니다. 책을 찾으면 설명이 제공됩니다.
구문: int ereg(문자열 패턴, 문자열 문자열, 배열 [regs]);
반환 값: 정수/배열 이 함수는 패턴 규칙에 따라 문자열을 구문 분석하고 비교합니다.
비교 결과에 의해 반환된 값은 배열 매개변수 regs에 배치됩니다. regs[0]의 내용은 원래 문자열이고, regs[1]은 규칙을 따르는 첫 번째 문자열이며, regs[2]는 두 번째 문자열입니다. 문자열 등을 준수합니다. 매개변수 regs가 생략되면 단순히 비교하고, 발견되면 반환 값은 true가 됩니다.
이해하기 쉽지 않은 것은 이전 정규 표현식입니다: ^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[ az]{2 ,3}$
이 정규식에서 "+"는 이전 문자열이 하나 이상 연속적으로 나타나는 것을 의미하고 "^"는 다음 문자열이 시작 부분에 나타나야 함을 의미하고 "$"는 이전 문자열이 끝에 나타나야 함을 의미합니다.
"."는 "."이기도 합니다. 여기서 ""는 이스케이프 문자입니다. "{2,3}"은 이전 문자열이 연속해서 2~3번 나타날 수 있음을 의미합니다. "()"는 포함된 콘텐츠가 대상 개체에도 나타나야 함을 의미합니다. "[_.0-9a-z-]"는 "_", ".", "-"에 포함된 모든 문자, a~z 범위의 문자, 0~9 범위의 숫자를 의미합니다.
이러한 방식으로 이 정규 표현식은 다음과 같이 번역될 수 있습니다.
"다음 문자는 (^)로 시작해야 합니다.", "문자는 "_", ".", "-", a~z 범위의 문자, 0~9 범위의 숫자([ _.0-9a-z-])", "앞의 문자가 한 번 이상 나타납니다(+).", @, "문자열은 a부터 z까지, 0부터 9까지의 범위에 포함된 문자로 구성됩니다. 숫자의 문자, "-"에 포함된 최소 하나의 문자, a~z 범위의 문자, 0~9 범위의 숫자, 마지막으로 (([0-9a -z . ][0-9a-z-]+.))", "이전 문자가 한 번 이상 나타납니다(+).", "a부터 z까지의 문자가 2~3번 나타나고 그것으로 끝납니다([ az] {2,3}$)”
복잡하죠? 그래서 사람들은 정규식을 사용합니다.