Php Ereg/Eregi/Reg_replace/.. Deprecated 문제 Preg

원문 : http://www.sitehis.com/spb3/sboard3/read.php?db=talk&uid=167

개인적으로 perl-레귤라보다 posix-레귤라 함수를 매우 좋아하는 터라,
충격이 큰데요.
추가 자세한 정보가 있으신 분들은 댓글이나 트위터 @sitehis 로 자료 주시면 감사하겠습니다.

PHP 언어에서 POSIX 레귤러함수를
5.3 버전에 deprecated(사용하지말것을경고)하고.
6.0 버전에서는 아예 삭제하겠다는 공지가 올라왔습니다.

처음 듣고 말도 안된다고 하였지만,
소문이아니고 perl 레귤러 함수로 고쳐 써야 하는 것으로 최종 확인하였습니다.

 

  • ereg -> preg_match
  • eregi -> preg_match ( i modifier )
  • ereg_replace -> preg_replace
  • ereg_replace -> preg_replace ( i modifier)
  • split -> preg_split
  • spliti -> preg_split ( i modifier )
  • sql_regcase() -> 없음 알아서..
     

자세한 안내는 다음에서 확인하실 수 있습니다.

하나씩 정검하여 봅시다.

급하니깐 E_DEPRECATED 에러메세지를 우선 안 나오게 할려면,

  • error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
  • 혹은 error_reporting(E_ALL ^E_DEPRECATED);
  • 혹은 @ini_set(‘display_errors’, 0);

고쳐버리겠다고요?? 그러면 다음 자동으로 고쳐주는 프로그램을 이용해보세요


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);
  • 레귤러 표현식에 / … /i  로 감싸는 것으로 우선 해결

ereg_replace()

  • ereg_replace(‘[^A-Za-z0-9_]’, ”, $str);
  • preg_replace(‘/[^A-Za-z0-9_]/’, ”, $str);
  • 복잡한 것은 이렇게~
  • $str_new = preg_replace(‘/’ . preg_quote($word) . ‘/’, ”, $str_old);
  • 간단하게 이런 방법도 ( / 대신에 별로 사용않하는 # 혹은 `(틸드)를 사용해서 )
  • $str_new = preg_replace(“#$word#’, ”, $str_old);
  • $str_new = preg_replace(“`$word`”, ”, $str_old);

eregi_replace()

  • ereg_replace(‘[^A-Za-z0-9_]’, ”, $str);
  • preg_replace(‘/[^A-Za-z0-9_]/i’, ”, $str);
  • 복잡한 것은 이렇게~
  • $str_new = preg_replace(‘/’ . preg_quote($word) . ‘/i’, ”, $str_old);


관련 게시물(http://www.sitehis.com)

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다