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

因为 PHP 5.3 升级时出现“ereg”错误。根据本网站上的信息,我在其他几个返回错误代码的地方对其进行了更改,并添加了正斜杠,除了这里,错误到处都消失了。让我补充一点,我不是程序员,只是网站管理员。我在这里没有我的元素。

4

1 回答 1

0

ereg-*函数如何处理正则表达式和函数如何处理正则表达式是有区别的preg_*。基本上,您需要not alphanumeric or backslash在两端都有一些字符才能使该功能正常工作。

尝试这个:

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

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

您将需要转义该 key,但这应该给您一个开始。

另外,作为说明,我认为您的意思不是/\n/. 你应该回到\n. 区别:第一个匹配这个字符串:

foo/
/bar

而第二个匹配这个字符串

foo
bar
于 2013-10-16T17:02:18.787 回答