웹마스터 팁



1.      정규식 네이놈!!!!!!!
2.      ^$.*?+
***.    []{}()|
4.      비, 김밥, 팬티, 형, 파도, 함수
5.      단군 할아버지와 해리포터




사실 정규식에 ^$.*?+ 요런 기호만 쓰이면 얼마나 단순하고 쉽겄냐만....
단순하고 쉽다면 역시 또한 그리 강력한 기능을 가질수 없을거다.
최소한 떼어먹힌 딱지 받는거보다 어렵다.
다행인지 불행인지 정규식은 php 에서 필수는 아니다.
정규식 몰라도 그럭저럭 php 학습에 지장은 없다는 말이다.
그리고 정규식은 자바스크립트에서도 쓸수 있지만 자바스크립트 소스에
정규식을 넣은 소스는 거의 보지 못했다.


php 에서 정규식하면 가장 빨리 떠오르는 단어가 자동링크이다.
http:// 로 시작하는 문자열이나 mms:// 로 시작하는 문자열을
ereg_replace() 함수를 이용해서 <a href=어쩌구저쩌구>중얼중얼</a> 의 형태로
브라우저에 뿌려주어 자동으로 링크를 걸어주는것인데
완벽한 기능의 자동링크는 거의 힘들다는것이 내 관점이다.
다만 최대한 보안을 할수는 있다.


주절주절 이런말 지껄인다고 규식이넘이 딱지 갚는것도 아닐테고....
진도 나가자.
(비밀이지만......내 고향이 진도다.)



[]

이건 배열을 표현할때 쓰는 기호다. 난 그냥 대괄호라고 알고 있다.
이게 정규식에서 쓰이면 대괄호안에 문자나 숫자가 마구마구 들어가며
이 마구마구 들어간 것중에서 아무거나 하나에 해당하는게 있으면 참이다.

정규식 [abcdefg] 는 a 도 참이고 b 도 참이고 c 도 참이고........
정규식 ab[cdefg] 는 abc 도 참이고 abd 도 참이고 abe 도 참이고......
정규식 ab[012]cd 는 ab0cd 도 참이고 ab1cd 도 참이고 ab2cd 도 참이다.


[] 이넘을 ^ 과 결합해서 쓸수 있다.
역할은 정 반대이다.
ab[^012]cd 라는 형태인데 말로 풀어보자면 ab 로 시작하고 cd 로 끝나면서
그 사이에 0 이나 1 이나 2 가 들어있지 않은것을 찾는다.
그렇다면 ab12cd 는 ab[^012]cd 에 포함 될까 안될까??
ab 와 cd 에 들어있는것이 12 이고 이건 0도 아니고 1도 아니고 2 도 아니므로
포함 된다.(오타 같지??)
ab[^012]cd 는 ab0cd, ab1cd, ab2cd 세개를 뺀 ab 로 시작하고 cd 로 끝나는
모든걸 포함하는거다.


{}


이건 중괄호라고 우기자. 이게 정규식에 쓰이면 괄호안에 숫자가 들어간다.
한개가들어갈수도있고두개가들어갈수도있다한개가들어갈때뒤에콤마를쓸수도이따

중괄호에 한개의 숫자가 들어갈 경우 숫자만큼 앞에 문자를 반복한것이 해당된다.
xy{3}z  x 뒤에 y 가 3회 반복되고 뒤에 z 가 붙음. xyyyz,xxxxxyyyz 가 참이다.

중괄호에 두개의 숫자가 들어갈 경우 머머 에서 머머만큼의 반복된것이 해당 된다.
xy{2,5}z  x 뒤에 y 가 두번이상 다섯번까지 반복되고 뒤에 z 가 붙은것이 참이다.
       xyyz, xyyyz, xyyyyz, xyyyyyz, xxxxxxxyyyz 가 참이다.

중괄호에 한개의 숫자와 콤마가 들어가면 그 숫자이상 반복된것이 해당 된다.
xy{2,}z x뒤에 y 가 두번 이상 반복 되고 뒤에 z 가 붙은것이 참이다.





()


이건 괄호안에 문자가 들어가는데 단독으로 쓰이질 않고 뒤에 * + ? 등등을 붙여
쓴다. * 가 붙으면 "* 를 하되 괄호안에것만 참조하라" 는 말이다. 어렵쥐??

* 기호는 앞엣 문자가 0번 이상 나온것이 해당 된다고 말 했다.
xy(abc)*z 라고 하면 "xy 에서부터 z 까지 그 사이에 abc 가 0번 이상 낑긴것"
이라는 말이다.
  xyz, xyabcz, xyabcabcz..............

그럼 xy(abc)?z 는 뭘까.......??
xy 에서부터 z 까지 그 사이에 abc 가 0번 또는 1번 낑긴것"이라는 말이다.


그럼 xy(abc)+z 는??
"xy 에서부터 z 까지 그 사이에 abc 가 한개 이상 있는것" 이라는 말이다.


그럼 xy(abc){2,}z 는?
"xy 에서부터 z 까지 그 사이에 abc 가 두번이상 반복 되어있는것" 이란 말이다.

이 () 와 같이 흔히 쓰이는 것이 | 가 있다.
쓰이는 형태는 xy(ab|cd)+z 이다.
말로 표현하자면 xy 에서부터 z 까지 그 사이에 ab나 cd 가 한번이상 들어있는것
을 말 한다.
+ 뿐만이 아니고 * 나 ? 도 한번이상이냐 0번 이상이냐 또는 0번 1번이냐 차이다.



그럼 거꾸로 이러이러한girl 표현해주는 정규식을 만들어보자.
이러이러한girl - "http:// 로 시작하고 문자나 숫자 점까지 들어있는것이 1개 이상 반복 되는것"
눈치 챗겠지만 자동 링크를 위한 준비작업이다.
그리고 이건 아주 기초적인 자동링크이다.
인터넷 주소에 특수문자를 포함해서 모든 문자나 숫자가 들어갈수 있지만
배우는 우리 입장에서는 아주 기본적인 도메인으로 끝난 http://www.어쩌구저쩌구.지껄지껄
의 형태만 자동 링크하는걸 배우기로 하자.
물론 이런 형태를 완벽히 자동링크하려면 좀더 진도를 나가야 한다.
그저 이러이러한girl(http:// 로 시작하고 문자나 숫자 점까지 들어있는것이
1개 이상 반복 되는것)이 정규식으로 어떻게 표현 되느냐에 관한것만 살펴보고 이해했으면
성공이다.


1) http:// 로 시작한다??  
        http:// /> 2) 여기에 문자나 숫자 점이 들어간다??  
        [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.]
            (맨뒤 점 앞에 슬래쉬는 점이 특수기호라서 붙여준거다)
3) 이것이 한번이상 반복 된다??
         {1,}
4) 이걸 쭉쭉 붙여쓰면
    (http://[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.]{1,})

오키??
괄호 붙는거........설명 안해도 알쥐??


[abcdefghijklmnopqrstuvwxyz] 요건 [a-z] 라고 쓸수 있다.
[ABCDEFGHIJKLMNOPQRSTUVWXYZ] 는 [A-Z] 라고 쓸수 있다.
[0123456789] 는 [0-9] 라고 쓸수있다.
이 세개를 다 합쳐서 [a-zA-Z0-9] 라고 써도 뭐라 할 사람 음따.

그러므로......
위에 결론을 이런식으로 쓰면.....
    (http://[a-zA-Z0-9.]{1,})
가 된다.



아참 정신없이 설명하다 깜빡 잊어뿌따.
규식이 이너마 딱지 갚아라!!