2013-10-16 65 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