본문 바로가기

Story/php

php 5.3 변경사항 preg_replace , preg_replace_callback

반응형

PHP 5.3. 부터 POSIX Regex 함수( ereg_replace, ereg, eregi_replace, eregi, split, spliti, sql_regcase ) 들이 중요도가 떨어져서 더이상 사용하지 않게될 함수로 되었습니다.

(This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.)


PHP 6.0.0 부터 완전히 제거됩니다.

http://php.net/manual/en/reference.pcre.pattern.posix.php

 

Function replacements
POSIX PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() preg_replace()
eregi() preg_match()
split() preg_split()
spliti() preg_split()
sql_regcase() No equivalent

 

 

ereg, eregi 함수는 정규식 패턴이 아닌 단순 문자열 포함여부 확인으로 사용할 경우 strpos, stripos로 변경
단 대소문자 구분없이 찾는 stripos 함수는 php5에서 부터 지원 4에서 사용하려면
if (eregi('where',$syntax)) $syntax .= ' '.$operator.' '.$query;
 -> if (strpos(strtolower($syntax), 'where')!==false) $syntax .= ' '.$operator.' '.$query;

ereg -> preg_match (패턴을 / / 으로 감싼다)
ereg('\.([^\.]*$)', $this->file_src_name, $extension)
-> preg_match('/\.([^\.]*$)/', $this->file_src_name, $extension)

eregi -> preg_match (패턴을 / /i 으로 감싼다)
eregi('\.([^\.]*$)', $this->file_src_name, $extension)
-> preg_match('/\.([^\.]*$)/i', $this->file_src_name, $extension)

ereg_replace -> preg_replace
ereg_replace('[^A-Za-z0-9_]', '', $this->file_dst_name_body);
-> preg_replace('/[^A-Za-z0-9_]/', '', $this->file_dst_name_body);

eregi_replace -> preg_replace
ereg_replace('[^A-Za-z0-9_]', '', $this->file_dst_name_body);
-> preg_replace('/[^A-Za-z0-9_]/i', '', $this->file_dst_name_body);

출처 : http://koong.net/index.php?MenuID=4&cat=php&list_count=100&mode=view&idx=860

 

하지만 5.4 에서 없어지는게 또 있는대 preg_replace() 가 사라지게 된다는 겁니다.

PHP 5.4.x: "preg_replace() /e modifier is deprecated, use preg_replace_callback()"

 

preg_replace('/_(.?)/e',"strtoupper('$1')", $vars['settings']['type']);

 

이렇게 사용하던걸 아래와 같이

 

preg_replace_callback(   // php5.x preg_replace_callback() method
           
'/_(.?)/'
,
            function (
$m
) {
              return
strtoupper($m[1
]);
            },
           
$vars['settings']['type'
]),

변경해서 사용합니다.

http://kr1.php.net/manual/en/function.preg-replace-callback.php

 

반응형