2010-04-19 1 views
3

누군가가 나를 비난하는 PHP 코드를 변환하는 데 도움을 줄 수 있는지 궁금합니다.PHP eregi를 preg_match로 변환하는 데 도움이 있습니다.

if(eregi(trim ($request_url_handler[$x]),$this->sys_request_url) && $this->id_found == 0){ 

그것은 웹 사이트에 대한 구성 설정을 반환하는 함수의 일부입니다

는 여기 변환하려고 한 줄입니다. 아래는 전체 기능입니다.

// GET CORRECT CONFIG FROM DATABASE 
function get_config($db) 
{ 
    global $tbl_prefix; 
    $db->query("SELECT cid,urls FROM ".$tbl_prefix."sys_config ORDER BY cid"); 

    while($db->next_record()){ 
     $request_url_handler = explode("\n",$db->f("urls")); 
     if(empty($request_url_handler[0])) { 
      $request_url_handler[0] = "@"; 
      $this->id_found = 2; 
     } 

     for($x=0; $x<count($request_url_handler); $x++) { 
      if(empty($request_url_handler[$x])) { 
       $request_url_handler[$x] = "@"; 
      } 
      if(eregi(trim($request_url_handler[$x]),$this->sys_request_url) && $this->id_found == 0) { 
       $this->set_config($db,$db->f("cid")); 
       $this->id_found = 1; 
      } 
     } 

     if($this->id_found == 1) { 
      return($this->sys_config_vars); 
     } 
    } 

    $this->set_config($db,""); 
    return($this->sys_config_vars); 
} 

도움이 정말 감사 할 것입니다. 나는 XAMPP를 1.7.3으로 업데이트 한 이후에야 eregi 함수가 더 이상 사용되지 않는다는 것을 발견했다. 교체

+0

아이디어를 얻으려면 [ "PHP의 eregi를 preg_match로 변경하는 방법"] (http://customphpfunctions.blogspot.com/2011/12/how-to-change-phps-eregi-to-pregmatch.html)을 참조하십시오. 감가 상각 된 것을 다른 것과 대체하기위한 것. –

답변

3

시도 :

if(eregi(trim($request_url_handler[$x]),$this->sys_request_url) && $this->id_found == 0) { 

과 :

$request_url_handler[$x] = trim($request_url_handler[$x]); 
if(preg_match("/$request_url_handler[$x]/i",$this->sys_request_url) && $this->id_found == 0) { 

eregi은 더 이상 사용되지 않으며 우리의 교체로 i 옵션을 preg_match을 사용해야합니다. 일반적

eregi($regex,$input) 

로 대체 될 수

preg_match("/$regex/i",$input) 

EDIT :

그것 $regex 위에서 로서 사용되는 임의 /을 포함하지 않는 것으로 가정 구분 기호. 그 다음 다른 구분 기호를 사용해야합니다 경우 @ 또는 # 또는 |가 또는 당신은 또한 $regex에서 구분 기호의 모든 발생을 피할 수 $regex

preg_match("#$regex#i",$input) 

에 포함되지 말한다.

+0

이 문제에 대해 도움을 주신 것에 감사드립니다. 경고 : preg_match() [function.preg-match] : 57 행의 C : \ xampp \ htdocs \ VirtualCMS \ system \ class_config.php에있는 알 수없는 수정 기호 '/' – Jason

+0

' 정규식에 슬래시가 포함되어있는 경우 '/'를 사용하여 '/'를 입력하십시오. –

+0

@ Jason : 답변을 업데이트했습니다. preg_match에서 다른 구분 기호를 사용해보십시오. – codaddict