PHP 5.3 부터 ereg() 함수가 죽었다, preg_match() 로 교체하라 > 온라인강의

본문 바로가기
 
 
 
오늘 1,085
어제 1,706
최대 2,526
전체 3,395,604

최근 방문자

1011
1853
1775
1756
1706
1085
18 19 20 21 22 23
비즈니스의 시작 비즈명함 ~ 가격, 품질, 배송 3가지 만족을 드리는 비즈명함 / 즉석명함 / 급행서비스 / 서울 전지역 수도권일부 3시간배송

select * from g5_menu where me_use = '1' and me_link like '%lecture%'
온라인강좌 홈 > 온라인강좌 > 온라인강좌

PHP | PHP 5.3 부터 ereg() 함수가 죽었다, preg_match() 로 교체하라 (update. 2014-11-24)

페이지 정보

작성일2014-11-12 10:28 조회6,625회 댓글0건

본문

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]부터 ( ) 안의 일치부분만 빼올 수 있습니다.


ereg()
변경전 : ereg('\.([^\.]*$)', $this->file_src_name, $extension);
변경후 : preg_match('/\.([^\.]*$)/', $this->file_src_name, $extension);


eregi()
변경전 : eregi('\.([^\.]*$)', $this->file_src_name, $extension);
변경후 : preg_match('/\.([^\.]*$)/i', $this->file_src_name, $extension);


ereg_replace()
변경전 : $this->file_dst_name_body = ereg_replace('[^A-Za-z0-9_]', '', $this->file_dst_name_body);
변경후 : $this->file_dst_name_body = preg_replace('/[^A-Za-z0-9_]/', '', $this->file_dst_name_body);


관련자료
http://www.devthought.com/2009/06/09/fix-ereg-is-deprecated-errors-in-php-53/
http://blog.arzz.com/409
http://php.net/manual/kr/function.preg-match.php
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

등록된 댓글이 없습니다.


목록

Total 2,005건 1 페이지
온라인강의 목록
번호 제목
2005
2004
2003
2002
2001
2000
1999
1998
1997
1996
1995
1994
1993
1992
1991
1990
1989
1988
1987
1986
1985
1984
1983
1982
1981
게시물 검색
 
 
상호: 해피정닷컴 대표:정창용 사업자등록번호:119-05-36414 (08394) 서울시 구로구 디지털로 242 한화비즈메트로1차 1502호
전화: 070-7600-3500 팩스:02-865-3528 개인정보관리:정창용 mail@happyjung.com 에스크로확인
개인정보취급방침
COPYRIGHT 2001~2017 해피정닷컴. All rights reserved. 부가통신사업신고:서울체신청-1217 통신판매신고:2014-서울구로-0074
 
모바일 버전으로 보기