태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

알쯔의 외부기억장치

PHP 5.3.0 버전 이상에서 사라져버린 비운의 함수들이 있습니다. 바로 POSIX Regex 함수들입니다. 대부분 많이들 써왔던 함수이기에, 저도 그렇고 아직까지 많은분들이 5.3.0 이상 버전으로 업데이트를 하지 못하고 있을 듯 합니다.

하지만, PHP 6.0.0 이상버전부터 완전히 사라질 이 함수들을 언제까지고 끌고갈 수 없기때문에 대체함수(?)로 바꾸는 방법을 간단하게 설명할려고 합니다.

split함수
split은 특정패턴으로 문자열을 잘라주는 함수입니다.
예를 들어, $arr = split(',', '아빠,엄마'); 라고 한다면 $arr 에는 Array('아빠','엄마'); 가 되는 것이지요.
이함수는 5.3.0 이상버전부터 explode함수로 대체되어야 합니다. 사용방법은 똑같습니다만, split함수가 정규식을 지원했다면 explode는 하지 않는다라는 것이 다릅니다.


ereg함수
ereg계열의 함수는 정규식으로 문자열을 찾거나, 찾은문자열을 바꾸거나 하는 함수입니다.
ereg_replace($patten, $replacement, $string); 형태로 쓰입니다.
이 함수는 5.3.0 이상부터 preg_replace로 바꾸어야합니다. 두개의 함수의 인자순서는 같지만, ereg함수와 preg함수는 정규식을 표현하는 방법이 약간 틀립니다.

$str = ereg_replace('[a-z]+', 'A', $str);
ereg함수가 위와 같이 정규식을 적었다면, preg함수는 아래와 같이 적습니다.
$str = preg_replace('/[a-z]+/', 'A', $str);

그리고 ereg계열이 대소문자를 구분하는 것과 구분하지 않는 것이 ereg, eregi 두가지 함수로 구분되었다면, preg는 하나의 함수로 처리됩니다. 예를 들어 위의 preg_replace 함수의 정규식에서 대소문자를 구분하지 않겠다고 한다면, 아래와 같이 i가 추가됩니다.
$str = preg_replace('/[a-z]+/i', 'A', $str);

그 외에 문자열을 검색하던 ereg함수는 preg_match함수로 대체되어야 합니다.
$str = 'abcedf';
if (ereg('[abc]'. $str, $matches) == true) print_r($matches);
뭐 저런식으로 ereg함수를 사용하듯이 preg_match함수도 사용하면 되지만 정규식 입력부분은 역시 약간 다릅니다.

$str = 'abc123abc';
if (preg_match('/([a-z]+)([0-9]+)/', $str, $matches) == true) print_r($matches);
위의 처럼 3번째 인자에 검색된 패턴이 배열로 담기는 인자를 넣습니다.
preg_match가 true가 된다면, $matches안에는 일치된 문자열이 배열로 들어가게 되죠. 정규식에 ( ) 가 없다면 $matches[0]에 일치된 전체패턴이 들어가게 되겠고, ( )가 있다면 $matches[0] 이후의 $matches[1]부터 ( ) 안의 일치부분만 빼올 수 있습니다.

더 설명했다간, 정규식 강좌가 될듯 하니 적당히 멈추도록 하겠습니다. = _=;;;

어쨋든, 몇몇 사라진 함수들이 있으니, 소스파일을 쭉 열어놓고, 열심히 바꾼다음 PHP버전업을 해줘야 할 것 같습니다. 망할!!
저작자 표시 비영리 변경 금지
Posted by 알쯔
이럴땐, 이렇게! l 2010/04/25 18:43

TRACKBACK :: http://blog.arzz.com/trackback/409 관련글 쓰기

댓글을 달아 주세요

1  ... 15 16 17 18 19 20 21 22 23  ... 387 

카테고리

분류 전체보기 (387)
프로필 (2)
일상이야기 (216)
세상바라보기 (9)
미디어로그 (16)
주절거림 (57)
엔터테인먼트로그 (17)
이럴땐, 이렇게! (50)
개발항해록 (20)

달력

«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29