安装dede出现Deprecated: Function ereg_replace() is deprecated in F:\wamp\www1\dede\c

cyr11 2009-08-17 12:44:56
安装dede5.5uft出现Deprecated: Function ereg_replace() is deprecated in F:\wamp\www1\dede\config.php on line 2

服务器是WampServer2.0i

好像WampServer2.0c没这个问题


<?php
define('DEDEADMIN', ereg_replace("[/\\]{1,}", '/', dirname(__FILE__) ) );
require_once(DEDEADMIN.'/../include/common.inc.php');
require_once(DEDEINC.'/userlogin.class.php');
header('Cache-Control:private');
$dsql->safeCheck = false;
$dsql->SetLongLink();

//获得当前脚本名称,如果你的系统被禁用了$_SERVER变量,请自行更改这个选项
$dedeNowurl = $s_scriptName = '';
$isUrlOpen = @ini_get('allow_url_fopen');
$dedeNowurl = GetCurUrl();
$dedeNowurls = explode('?', $dedeNowurl);
$s_scriptName = $dedeNowurls[0];

//检验用户登录状态
$cuserLogin = new userLogin();
if($cuserLogin->getUserID()==-1)
{
header("location:login.php?gotopage=".urlencode($dedeNowurl));
exit();
}
if($cfg_dede_log=='Y')
{
$s_nologfile = '_main|_list';
$s_needlogfile = 'sys_|file_';
$s_method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : '';
$s_query = isset($dedeNowurls[1]) ? $dedeNowurls[1] : '';
$s_scriptNames = explode('/',$s_scriptName);
$s_scriptNames = $s_scriptNames[count($s_scriptNames)-1];
$s_userip = GetIP();
if( $s_method=='POST' || (!eregi($s_nologfile,$s_scriptNames) && $s_query!='') || eregi($s_needlogfile,$s_scriptNames) )
{
$inquery = "INSERT INTO `#@__log`(adminid,filename,method,query,cip,dtime)
VALUES ('".$cuserLogin->getUserID()."','{$s_scriptNames}','{$s_method}','".addslashes($s_query)."','{$s_userip}','".time()."');";
$dsql->ExecuteNoneQuery($inquery);
}
}

//管理缓存、管理员频道缓存
$cache1 = DEDEDATA.'/cache/inc_catalog_base.inc';
if(!file_exists($cache1)) UpDateCatCache();
$cacheFile = DEDEDATA.'/cache/admincat_'.$cuserLogin->userID.'.inc';
if(file_exists($cacheFile)) require_once($cacheFile);

//更新栏目缓存
function UpDateCatCache()
{
global $dsql, $cfg_multi_site, $cache1, $cacheFile, $cuserLogin;
$cache2 = DEDEDATA.'/cache/channelsonlist.inc';
$cache3 = DEDEDATA.'/cache/channeltoplist.inc';
$dsql->SetQuery("Select id,reid,channeltype,issend From `#@__arctype`");
$dsql->Execute();
$fp1 = fopen($cache1,'w');
$phph = '?';
$fp1Header = "<{$phph}php\r\nglobal \$_Cs;\r\n\$_Cs=array();\r\n";
fwrite($fp1,$fp1Header);
while($row=$dsql->GetObject())
{
fwrite($fp1,"\$_Cs[{$row->id}]=array({$row->reid},{$row->channeltype},{$row->issend});\r\n");
}
fwrite($fp1,"{$phph}>");
fclose($fp1);
$cuserLogin->ReWriteAdminChannel();
@unlink($cache2);
@unlink($cache3);
}

function DedeInclude($filename,$isabs=false)
{
return $isabs ? $filename : DEDEADMIN.'/'.$filename;
}

?>


麻烦高手解决一下
谢谢

...全文
20125 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
yy10100825 2012-09-25
  • 打赏
  • 举报
回复
3楼高手,谢谢3楼和五楼了
eniacmrh 2012-08-09
  • 打赏
  • 举报
回复
3# 强大!
Zjmainstay 2011-08-21
  • 打赏
  • 举报
回复
5楼解释清楚了,也很强!
tianyaofande 2011-04-17
  • 打赏
  • 举报
回复
3楼号强大啊。
tsfriendship 2011-02-14
  • 打赏
  • 举报
回复
恩 我去试试 tuanwed.com
moncler1 2010-11-29
  • 打赏
  • 举报
回复
moncler doudoune doudoune moncler homme moncler jacken moncler doudoune doudoune moncler homme moncler jacken
bigbryert 2010-10-22
  • 打赏
  • 举报
回复
define('DEDEADMIN', preg_replace("/[\/\\\\]{1,}/", '/', dirname(__FILE__) ) );

这一句解决问题,
shoujing 2010-09-20
  • 打赏
  • 举报
回复
这个问题是因为你用的php版本过高。
在php5.3中,正则函数ereg_replace已经废弃,而dedecms还继续用。有两个方案可以解决以上问题:
1、把php版本换到v5.3下。
2、继续使用v5.3,修改php.ini文件
;extension=php_mbstring.dll
改为
extension=php_mbstring.dll


;mbstring.func_overload = 0
修改为:
mbstring.func_overload = 7
上古玉清 2010-09-07
  • 打赏
  • 举报
回复
谢谢,3楼乃高人
一地脚印 2010-08-04
  • 打赏
  • 举报
回复
只替换了一行
1.define('DEDEADMIN', preg_replace("/[\/\\\\]{1,}/", '/', dirname(__FILE__) ) );
报错就没有了

不知道为什么
愿听解释?
CGAxiaoxiao 2010-07-26
  • 打赏
  • 举报
回复
谢谢了
mikedani 2010-02-03
  • 打赏
  • 举报
回复
3楼的很受用
cyr11 2009-08-17
  • 打赏
  • 举报
回复
正则表达式中单独出现的反斜线也需要转??

在正则表达式中,反斜线通常与其它字符一起构成特殊的结构,譬如‘\d’用来匹配数字字符,‘\s’用来匹配空白字符,‘\1’用来反向引用第一个分组捕获的文本。
可是,如果我们在正则表达式中,仅仅需要表示“反斜线”字符本身,该如何做呢?

其实,正则表达式对这个问题的处理,与字符串的处理是一样的,也就是说,在正则表达式中,必须用转义序列‘\\’来表示单个反斜线。

这个规定会带来一个有趣的问题:正则表达式中单独出现的反斜线字符,在正则表达式的层面,必须以转义序列‘\\’来表示,然而,每个反斜线,在表示正则表达 式的字符串中,又必须以转义序列‘\\’来表示。所以,在字符串中,必须写出四个反斜线‘\\\\’,才能对应到正则表达式中单独出现的一个反斜线字符: 在字符串处理层面,它们会被识别为两个反斜线‘\\’,在正则表达式的层面,它们会被识别为单个反斜线字符‘\’。

cyr11 2009-08-17
  • 打赏
  • 举报
回复
1.define('DEDEADMIN', preg_replace("/[\/\\\\]{1,}/", '/', dirname(__FILE__) ) );
2.define('DEDEADMIN',strtr(dirname(__FILE__),'\\/','//'));

可以了

谢谢
不报错!
不明白这正则是干什么的
fenyao 2009-08-17
  • 打赏
  • 举报
回复
关注
foolbirdflyfirst 2009-08-17
  • 打赏
  • 举报
回复
信息提示是不推荐使用ereg_replace(),你加个@看能不能屏蔽掉,@ereg_replace(...)。
不行的话,改改咯。
1.define('DEDEADMIN', preg_replace("/[\/\\\\]{1,}/", '/', dirname(__FILE__) ) );
2.define('DEDEADMIN',strtr(dirname(__FILE__),'\\/','//'));
cyr11 2009-08-17
  • 打赏
  • 举报
回复
Warning: preg_replace() [function.preg-replace]: No ending matching delimiter ']' found in F:\wamp\www\dede\config.php on line 2

是不是不支持正则呢

要开启什么才支持
还是那的问题
CunningBoy 2009-08-17
  • 打赏
  • 举报
回复
define('DEDEADMIN', ereg_replace("[/\\]{1,}", '/', dirname(__FILE__) ) );
//改为
define('DEDEADMIN', preg_replace("[/\\]{1,}", '/', dirname(__FILE__) ) );


因为preg_replace比ereg_replace的执行速度快,PHP推荐使用preg_replace.

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧