2013-10-16 3 views
0

는 :이러한 구분 기호는 무엇이 잘못 되었습니까? 이 코드에 대한

{ 
    $params = explode("/\n/", $params);     
    $return = array(); 

    foreach($params as $param) { 
     if (preg_match($key, $param)) { 
      $return[] = $param; 
     } 
    } 
    return implode("/\n/", $return); 
} 

내가 얻을 "는 preg_match() [function.preg 경기가] : 경고 구분 영문자와 숫자, 백 슬래시가 아니어야합니다"

누군가가 내가 부족 무엇인지 말해 줄 수 또는 변경해야합니까? 고맙습니다. 때문에 "EREG"오류/PHP 5.3 업그레이드 승

/** 
* Filter (remove) a parameter from a parameter string 
* @return string Filtered parameter String 
* @param object $params 
* @param object $key 
*/ 
function filterParams($params, $key) 
{ 
    $params = explode("\n", $params);     
    $return = array(); 

    foreach($params as $param) { 
     if (eregi($key, $param)) { 
      $return[] = $param; 
     } 
    } 
    return implode("\n", $return); 
} 
/** 
* Return the JCE Editor's parameters 
* 
* @return object 
*/ 

:

일부 추가 정보를

,이 변경되었습니다. 나는이 사이트의 정보마다 오류 코드를 반환하고 앞쪽의 슬래시를 추가 한 여러 다른 장소에서이 파일을 변경했으며 오류는 어디에서나 사라졌습니다. 프로그래머가 아니라 단지 웹 사이트 관리자라고 덧붙이겠습니다. 나는 여기서 내 요소에서 벗어났다.

+8

: 첫 번째는이 문자열을 일치? – andrewsi

+6

sidenote,'explode'는 정규 표현식을 사용하지 않습니다 –

+1

아마 preg_split ("/ \ n /", $ params)을 사용하면 적절할 것입니다. –

답변

0

ereg-* 함수가 정규 표현식을 처리하는 방법과 해당 함수를 처리하는 방법이 다른 점이 있습니다 (preg_*). 기본적으로 기능을 작동 시키려면 양쪽 끝에 not alphanumeric or backslash 문자가 있어야합니다.

$key = '/' . $key . '/'; 
// or $key = '#' . $key . '#'; 
// or $key = '@' . $key . '@'; 
// etc. 

// later 
if (preg_match($key, $param)) { 
    $return[] = $param; 
} 

당신은 escape that key 필요합니다, 그러나 이것은 당신에게 출발을해야합니다

이 시도해보십시오.

메모로서, 나는 당신이 /\n/을 의미한다고 생각하지 않습니다. \n으로 돌아 가야합니다. 차이 : 두 번째 경기 동안

foo/ 
/bar 

`$의 key`의 내용이 문자열

foo 
bar 
+0

그걸 시도했는데 다른 파일을 참조하는 다른 오류 메시지가 나타납니다 : PHP 오류 메시지 : WARNINGcall_user_func_array()는 매개 변수 2가 배열이 될 것으로 기대합니다. givenError string – Jennifer

+0

앞 슬래시를 제거하면 오류 메시지가 약 100 앞쪽의 슬래시는 두 번만 반복됩니다. – Jennifer

관련 문제