웹프로그래밍

Global It Leader!!


PHP


 
 

PHP 마이그레이션시 자주 나오는 DEPRECATED 함수 대체하기

페이지 정보

작성자 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 2,971회 작성일 19-02-22 14:53

본문

PHP로 만들어진 오래된 홈페이지에 PHP 버전을 올릴 경우 여러가지 문제가 발생할 수 있습니다. 파라미터를 변수에 자동으로 할당하는 register_globals 옵션 문제, <? 태그를 사용하는 short_open_tag 옵션 문제, 버전이 올라가면서 지원하지 않는 함수가 생기는 문제 등입니다.


register_globals 옵션은 PHP 5.3.0에서 DEPRECATED 되었고, PHP 5.4.0 부터는 제거되어서 사용할 수 없습니다.


이번에 알아볼 것은 버전이 올라가면서 지원되지 않는 함수들 중 가장 많이 나타나는 몇가지를 알아볼 것입니다.


PHP 버전을 올리고 실행을 해보면 지원되지 않는 함수로 인해 다음과 같은 에러 메세지가 보여질 수 있습니다.


Call to undefined function eregi()


PHP 5.3.0 부터 DEPRECATED 되었고, PHP 7.0.0 버전에서는 완전히 없어진 많이 쓰이는 함수들 로 다음과 같은 것들이 있습니다.


- ereg() : 정규식을 사용하여 문자열 매칭 여부를 판단합니다.(대소문자 구분)

- ereg_replace() : 정규식을 사용하여 문자열을 대치합니다.(대소문자 구분)

- eregi() : 정규식을 사용하여 문자열 매칭 여부를 판단합니다.(대소문자 구분하지 않음)

- eregi_replace() : 정규식을 사용하여 문자열을 대치합니다.(대소문자 구분하지 않음)

- split() : 문자열을 구분하로 분리합니다.


1. preg_match()는 ereg()와 eregi()를 대체합니다.


먼저 기존 함수의 사용법을 보겠습니다. 아래 예는 $subject가 소문자 abc로 시작하는지 체크합니다. 대소문자를 구분하지 않고 체크하려면 eregi() 함수를 사용하면 되겠습니다.

 

<?php
$subject = "abcdef";
$pattern = '^abc';
if(ereg($pattern, $subject) {
    echo("match");
}
?>

 

ereg()를 대체하는 새로운 함수인 preg_match() 의 사용법 입니다. 정규식 패턴을 만드는데 차이점이 보입니다. 패턴의 시작과 끝에 '/' 를 넣어야 합니다. 대소문자를 구분하지 않고 비교하려면 패턴의 끝에 "i" 문자를 입력합니다. $pattern = '/^abc/i'; 가 되겠습니다.

 

<?php
$subject = "abcdef";
$pattern = '/^abc/';
if(preg_match($pattern, $subject) {
    echo("match");
}
?>

 

2. preg_replace()는 ereg_replace()와 eregi_replace() 를 대체합니다. 주의할 점을 위의 preg_match() 에서와 동일합니다. 정규식 패턴의 앞과 뒤에 '/' 를 추가하고, 대소문자를 구분하지 않을때는 패턴 끝에 "i" 를 추가합니다.

 

<?php 
$subject = "abcdef";
$pattern = '/^ABC/i';

$subject = preg_replace($pattern, '', $subject);

echo($subject);
?>

 

3. explode() 는 split() 함수의 문자열 분리 기능을 대체할 수 있습니다.

 

<?php
$daytime = split(" ", "2017-02-02 14:30 235");
print_r($daytime);

$daytime = explode(" ", "2017-02-02 14:30 235");
print_r($daytime);
?>

 

PHP 버전을 올릴때 문제가 되는 자주 나오는 함수를 대체하는 방법을 알아 보았습니다.



출처: https://offbyone.tistory.com/173 [쉬고 싶은 개발자]

 

댓글목록

등록된 댓글이 없습니다.

전체 90
게시물 검색
PHP 목록
번호 제목 글쓴이 조회 날짜
70 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2287 05-27
69 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3086 03-30
68 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2346 03-30
67 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2246 03-29
66 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2243 03-27
65 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2939 03-10
64 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3071 02-24
63 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2309 02-22
62 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4246 12-31
61 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2562 10-30
60 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4301 10-19
59 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3065 10-22
58 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3006 05-14
57 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3522 02-22
56 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3151 02-22
열람중 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2972 02-22
54 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3446 12-09
53 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3127 09-23
52 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3009 09-21
51 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3033 08-29