2013-10-16 92 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匹配]:分隔符不能是字母,數字或反斜線」

有人能告訴我,我錯過了什麼或需要改變?謝謝。

一些更多的信息,這是從改變:

/** 
* 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 
*/ 

因爲 「額日格」 錯誤瓦特/ PHP 5.3的升級。我在其他幾個返回錯誤代碼的地方對其進行了更改,並根據本網站上的信息添加了前斜槓,並且錯誤消失在此處。讓我補充一點,我不是一個程序員,只是一個網站管理員。我不在這裏。

+8

是什麼在'$ key':一是該字符串相匹配? – andrewsi

+6

旁註,'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 

雖然第二場比賽這個字符串

foo 
bar 
+0

我想,現在我正在引用另一個文件中的不同的錯誤消息: PHP錯誤消息:WARNINGcall_user_func_array()預計參數2爲陣列,串givenError」 – Jennifer

+0

如果我卸下前斜線,該錯誤消息重複約100在前斜線處,它只重複兩次。 – Jennifer