PHP 问题,下面这段里面把eregi 语句改成preg_match语句 php5.3不支持eregi(),用preg_match()替代。
foreach($GLOBALS['available_languages']as$lang=>$value){//$envType=1forthe'HTTP_ACCEP...
foreach ($GLOBALS['available_languages'] as $lang => $value) {
// $envType = 1 for the 'HTTP_ACCEPT_LANGUAGE' environment variable,
// 2 for the 'HTTP_USER_AGENT' one
$expr = $value[0];
if (strpos($expr, '[-_]') === FALSE) {
$expr = str_replace('|', '([-_][[:alpha:]]{2,3})?|', $expr);
}
if (($envType == 1 && eregi('^(' . $expr . ')(;q=[0-9]\\.[0-9])?$', $str))
|| ($envType == 2 && eregi('(\(|\[|;[[:space:]])(' . $expr . ')(;|\]|\))', $str))) {
if (PMA_langSet($lang)) {
return true;
}
}
} 展开
// $envType = 1 for the 'HTTP_ACCEPT_LANGUAGE' environment variable,
// 2 for the 'HTTP_USER_AGENT' one
$expr = $value[0];
if (strpos($expr, '[-_]') === FALSE) {
$expr = str_replace('|', '([-_][[:alpha:]]{2,3})?|', $expr);
}
if (($envType == 1 && eregi('^(' . $expr . ')(;q=[0-9]\\.[0-9])?$', $str))
|| ($envType == 2 && eregi('(\(|\[|;[[:space:]])(' . $expr . ')(;|\]|\))', $str))) {
if (PMA_langSet($lang)) {
return true;
}
}
} 展开
1个回答
2016-09-07 · 知道合伙人软件行家
关注
展开全部
eregi 与 preg_match 的语法相差不大,试修改如下(由于条件限手搭制,未经测试):
if (($envType == 1 && preg_math('^(' . $expr . ')(;q=[0-9]\\.[0-9])?$/i', $str))
|| ($envType == 2 巧薯氏&& preg_math('(\(|\[|;[[:space:]])(' . $expr . ')(;|\]|\))/i', $str))) {
if (PMA_langSet($lang)) {
return true;
}
}
eregi 使用 preg_match 配合 i 修正符替孝散代。
追答
一、错误的第1张截图,是 PHP 5.3 以上版本中,不支持eregi(),用preg_match()替代。
二、从你给出的代码中,eregi 牵涉到的两行,都只是做为判断条件,并没有做具体实际的动作。从上述代码看不到引起 500 错误的原因,建议你调试运行代码。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询