这些分隔符有什么问题?

时间:2013-10-16 16:32:04

标签: php preg-match

对于此代码:

{
    $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-match]:分隔符不能是字母数字或反斜杠”

有人可以告诉我我缺少什么或需要改变吗?谢谢。

更多信息,改编自:

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

因为“ereg”错误w / PHP 5.3升级。我在其他几个地方更改了它,它返回了错误代码,每个站点上的信息,并添加了正斜杠,错误消失在各处,但在这里。让我补充一点,我不是程序员,只是一个网站管理员。我不在这里。

1 个答案:

答案 0 :(得分: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