Header Ads

PHP 정규 표현식 함수 정리


/*************************************
PHP 정규 표현식 함수 정리
http://php.net/manual/en/ref.regex.php
**************************************/

/*
정규 표현식 규칙
https://en.wikipedia.org/wiki/Regular_expression

. 어떤 한 글자
a.c = a 와 c 사이의 어떤 한 글자
ex) abc, a8c, arc
.ac = ac 앞에 어떤 한 글자
ex) zac, 5ac

* 0 또는 하나 이상의 한 글자
a*c = c 앞에 글자가 없거나 또는 c 와 a 사이에 글자가 없거나 하나 이상
ex) c, ac, abc, abbbbc
ac* = ac 뒤에 글자가 없거나 하나 이상
ex) ac, ac8, acbd123

+ 최소 하나 이상의 한 글자
a+c = c 앞에 반드시 a 글자가 하나 이상
ex) ac, abc, aaaabbbbbbbbbbc

? 0 또는 하나의 한 글자
a?c =  c 앞에 글자가 없거나 또는 c 와 a 사이에 글자가 없는
ex) c, ac

^ 문자열의 시작
^ac = ac 로 시작하는 모든 문자열
ex) ac123, ac 8 defg
^a?c = c 나 ac 로 시작하는 모든 문자열
ex) cdefg 123, ac 123

$ 문자열의 끝
ac$ = ac 로 끝나는 모든 문자열
ex) zyxw 123 ac, fold ac
a?c+$ = c 나 ac 로 시작하고 하나 이상의 c 로 끝나는 모든 문자열
ex) c, ac, cc, ccccc, acccccccccccc

[] 대괄호 안에 있는 문자열 중에서 하나의 문자
[a-z] = 영어 소문자
[a-zA-Z] = 영어 소문자와 대문자
[0-9] = 숫자

{} 중괄호 안에 반복할 문자나 문자열의 갯수
a{3}c = aaac 와 같이  a 의 갯수가 3개인것을 찾음

() 소괄호 안에 있는 글자들을 그룹으로 묶음
a(bc){2} = a 뒤에 bc 가 두개인 것
ex) tabcbcggg, kabcbc123
a(bc) = a 뒤에 bc가 없거나 하나 이상
ex) cia, abc, abcdacbc

| 또는 OR 연사자
apple|banana = apple 또는 banana 를 모두 찾음
ex) apple juice, banana shake
*/

/*
문자열에 정규 표현식 패턴이 일치하는 부분이 있는지 검색
ereg
int = ereg ( string $pattern , string $string [, array &$regs ] ) // 있으면 1, 없으면 0
http://php.net/manual/en/function.ereg.php
*/
$date = "2016-09-12";
if ( ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs) ) {
    echo "$regs[3].$regs[2].$regs[1]";
} else {
    echo "Invalid date format: $date";
}

/*
문자열에 정규 표현식 패턴이 일치하는 부분이 있는지 검색, 영어 대소문자 구분 안함
eregi
int = eregi ( string $pattern , string $string [, array &$regs ] )
http://php.net/manual/en/function.eregi.php
*/
$string = 'XYZ';
if (eregi('z', $string)) {
    echo "'$string' contains a 'z' or 'Z'!";
}

/*
문자열에 정규 표현식 패턴이 일치하는 부분을 찾아, 지정한 문자열로 바꿈
ereg_replace
string = ereg_replace ( string $pattern , string $replacement , string $string )
http://php.net/manual/en/function.ereg-replace.php
*/
$string = "This is a test";
echo str_replace(" is", " was", $string);
echo ereg_replace("( )is", "\\1was", $string);
echo ereg_replace("(( )is)", "\\2was", $string);

/*
문자열에 정규 표현식 패턴이 일치하는 부분을 찾아 지정한 문자열로 바꿈, 영어 대소문자 구분 안함
eregi_replace
string = eregi_replace ( string $pattern , string $replacement , string $string )
http://php.net/manual/en/function.eregi-replace.php
*/
$pattern = '(>[^<]*)('. quotemeta($_GET['search']) .')';
$replacement = '\\1\\2';
$body = eregi_replace($pattern, $replacement, $body);

/*
정규 표현식 패턴으로 문자열을 구분하여 분할
split
array = split ( string $pattern , string $string [, int $limit = -1 ] )
http://php.net/manual/en/function.split.php
*/
// Delimiters may be slash, dot, or hyphen
$date = "04/30/1973";
list($month, $day, $year) = split('[/.-]', $date);
echo "Month: $month; Day: $day; Year: $year
\n"; /* 정규 표현식 패턴으로 문자열을 구분하여 분할, 영어 대소문자 구분 안함 spliti array = spliti ( string $pattern , string $string [, int $limit = -1 ] ) http://php.net/manual/en/function.spliti.php */ $string = "aBBBaCCCADDDaEEEaGGGA"; $chunks = spliti ("a", $string, 5); print_r($chunks); // , BBB , CCC , DDD , EEEaGGGA

No comments

Copyright 2016, minki. All rights reserved. Powered by Blogger.