对于此代码:
{
$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升级。我在其他几个地方更改了它,它返回了错误代码,每个站点上的信息,并添加了正斜杠,错误消失在各处,但在这里。让我补充一点,我不是程序员,只是一个网站管理员。我不在这里。
答案 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