잡담소장소

RegEx in PHP 본문

Study ;3

RegEx in PHP

알 수 없는 사용자 2010. 8. 30. 12:36



학부때 배웠던 정규표현식 ㄱ-;;
그 앙몽같던걸 간단한 것만 배웠었는데...
일태님이 간단한(!) 숙제를 내주셨다 -_ㅠ 키힝

블로그에 메모해놓긔!!




<PHP에서 쓰이는 정규표현식 관련 함수>

1. preg_filter & preg_replace 예제

<?php
$subject 
= array('1''a''2''b''3''A''B''4'); 
$pattern = array('/\d/''/[a-z]/''/[1a]/'); 
$replace = array('A:$0''B:$0''C:$0'); 

echo 
"preg_filter returns\n";
print_r(preg_filter($pattern$replace$subject)); 

echo 
"preg_replace returns\n";
print_r(preg_replace($pattern$replace$subject)); 
?>

The above example will output:

preg_filter returns
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [7] => A:4
)
preg_replace returns
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [5] => A
    [6] => B
    [7] => A:4
)


이거 이해한다고 한동안 뚫어지게 쳐다본 난 바보였나?
이해하고나니까 간단한걸 ㅠ_ㅠ

preg_filter의 경우 subject의 값이 pattern과 일치할 경우에만 replace에 있는 값을 저장한다.
첫번째 '1'의 경우 \d와 [1a]에 속하므로 A:C:가 찍힌다
(그런데 $0는 무슨 의미지 T_T)

preg_replace의 경우 subject의 값이 pattern과 일치하지 않더라도 값을 저장한다.
A,B의 경우 어느 pattern에도 속하지 않아도 저장하는 것을 볼 수 있다 :)


2. preg_split 예제


<?php
$str 
'hypertext language programming';
$chars preg_split('/ /'$str, -1PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?>

The above example will output:

Array
(
    [0] => Array
        (
            [0] => hypertext
            [1] => 0
        )

    [1] => Array
        (
            [0] => language
            [1] => 10
        )

    [2] => Array
        (
            [0] => programming
            [1] => 19
        )

)

preg_split는 패턴에 관련하여 문자열을 나누어 준다.
flag값을 PREG_SPLIT_OFFSET_CAPTURE으로 주어 각 문자열의 위치를 저장한 배열을 반환한다.
(flag값은 2개 더 있는데 해석하기 귀찮긔 -_-;;; 그닥 쓰지도 않을 것같다....고 생각하고 싶다)


3. preg_match 예제


<?php
$subject 
"abcdef";
$pattern '/^def/';
preg_match($patternsubstr($subject,3), $matchesPREG_OFFSET_CAPTURE);
print_r($matches);
?>

will produce

Array
(
    [0] => Array
        (
            [0] => def
            [1] => 0
        )

)


preg_match는 pattern에 맞는 값을 반환한다.
위의 예제는 def로 시작하는 문자열이 있는지 검색하여 해당 값을 반환하도록 하는 것이다.
만약 substr($subject, 3) 이 아닌 $subject로 들어가면 null값을 반환한다.
flag값으로 PREG_OFFSET_CAPTURE를 주어 offset값을 함께 반환한다.
반응형
Comments