정규표현식에서 정규화란?
- 어떤 문자열에 대해서 고정된 규칙이 있는 것을 사람이 보기에 짧고 보기 좋게 정의하고 규정한 것.
- 짧고 보기 좋게 정의한 것이지 정규화하지 않았다라고 프로그램의 성능이 크게 저하되거나, 동작하지 않는 것은 아니다.
기능
- 문자열의 일정한 패턴을 찾던지 치환하여 주는 기능을 가짐.
Ex) 메일 주소검사, 웹에서 폼 값을 처리할 때 특정 폼의 형식이 원하는 형식에 맞는지 검사할 때(필터링)
사용 함수
- eregi, eregi_replace, ereg, ereg_replace(PHP 5.3.0부터 사용하지 않음)
- perl의 함수 패턴을 그대로 사용할 수 있도록 해놓은 함수 : preg_match, preg_match_all, preg_quote, preg_replace, etc…
주요 함수 설명
- preg_match: int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
설명 : 입력받은 문자열(string $subject)에 입력받은 정규표현식 패턴(string $pattern)과 일치되는 문자열이 존재하는지 판단함.
인자 :
-> string $pattern :
문자열로 된 정규 표현식 패턴
("[구분자]표현식[구분자][변경자]" 또는 '[구분자]표현식[구분자][변경자]')
-> string $subject : 전체 대상 문자열
-> array &$matches : 패턴과 일치하는 문자열을 저장할 배열
결과값 :
패턴과 매치되는 문자열을 찾았을 때는 1 을 반환, 못 찾았을 때는 false 를 반환.
단, 세번째 인자(배열, Array)가 존재할 경우, 매치되는 문자열이 해당 배열 변수의 0번째에 할당되어 반환
용도 :
특정 패턴의 문자열이 존재하는지 여부를 확인 할 때나,
특정 패턴의 문자열을 찾아서 그 문자열을 배열로 받고 싶을 때 사용함.
※ 메뉴얼에서 함수를 정의할 때 [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] 같이
[] 으로 둘러 쌓여 있는 경우가 있다.
이것은 사용시 반드시 필요한 인자가 아니라 생략 가능한 인자라는 뜻임.
보통 사용자 함수를 만들 때 보면,
function get_title ($title, $len=50) {.....}
이런식으로 쓰는 경우가 많음.
이 함수는 사용할때 get_title ($title); 로도 사용할수 있고, get_title($title, $len); 로도 사용할수 있는 것과 같은 이치임.
※ &$matches 와 같이 변수 앞에 & 가 붙는 경우는 $matches 변수를 함수 내부에서 참조를 하겠다는 뜻임.
- preg_match_all : 정규식으로 원하는 문자열만 전부 찾아주는 함수.
- preg_quote : string preg_quote ( string $str [, string $delimiter ] )
str에서 정규 표현식 문법에 포함되는 모든 문자의 앞에 백슬래시를 덧붙입니다. 어떠한 텍스트에 특수 정규 표현식 문자를 포함하는 런타임 문자열을 처리할 때 유용함.
- preg_replace : 해당 패턴을 찾아서 다른 패턴으로 바꿔줌.
preg_replace("[패턴]" , "[바꿀 패턴]" , "[바꿀 문장]");
참고 블로그 : http://apmusers.com/tt/dbckdghk/130
'Old > PHP' 카테고리의 다른 글
Source Tree (0) | 2013.03.11 |
---|---|
생활코딩 - Xdebug (0) | 2013.03.11 |
curl 원격지 xml 가져오기 (0) | 2013.03.11 |
정규 표현식 설명 (0) | 2013.03.08 |
PHP라이브러리 – Snoopy (0) | 2013.03.08 |