PHP 5.3 부터 ereg() 함수가 죽었다, preg_match() 로 교체하라 > 기술자료 | 해피정닷컴

PHP 5.3 부터 ereg() 함수가 죽었다, preg_match() 로 교체하라 > 기술자료

본문 바로가기

사이트 내 전체검색

PHP 5.3 부터 ereg() 함수가 죽었다, preg_match() 로 교체하라 > 기술자료

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

페이지 정보


본문

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);

eregi_replace()
변경전 : $this->file_dst_name_body = eregi_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,643건 1 페이지
  • RSS
기술자료 목록
2643
PHP   505  2025-02-07 09:27 ~ 2025-02-07 16:59  
2642
그누보드   418  2025-02-07 08:55 ~ 2025-02-07 17:04  
2641
그누보드   672  2024-11-26 21:14 ~ 2024-11-26 21:22  
2640
그누보드   766  2024-11-22 10:52 ~ 2024-11-22 11:03  
2639
호스팅   769  2024-11-19 14:41 ~ 2024-11-19 21:17  
2638
Linux   588  2024-11-18 15:45 ~ 2024-11-18 15:48  
2637
일반   546  2024-11-15 16:45 ~ 2024-11-15 16:46  
2636
Secure   577  2024-11-06 18:48 ~ 2024-11-06 18:50  
2635
영카트   798  2024-10-21 13:44 ~ 2024-10-21 19:42  
2634
전자결제   1636  2024-09-05 09:30  
2633
MySQL   1448  2024-03-29 14:14 ~ 2024-03-29 14:14  
2632
그누보드   1670  2024-02-23 18:40 ~ 2024-02-24 06:13  
2631
JavaScript   1784  2024-02-16 18:50 ~ 2024-02-16 20:37  
2630
Java   1767  2024-02-06 16:49  
2629
PHP   1960  2024-02-06 16:42  
2628
호스팅   1740  2024-01-29 12:54  
2627
PHP   1634  2024-01-26 11:04 ~ 2024-01-26 11:13  
2626
MySQL   1757  2024-01-08 17:37 ~ 2024-03-14 16:00  
2625
SQL   2098  2024-01-08 12:36  
2624
영카트   2103  2024-01-04 14:57  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2025 해피정닷컴. All Rights Reserved.