我正在迁移php网站并获得以下声明
“ preg_replace():不再支持/ e修饰符,请使用preg_replace_callback”。
当更改为preg_replace_callback时,收到错误消息“ preg_replace_callback():要求参数2'$ this->('\ 1')'为有效的回调”。
function getFile($filename)
{
if ($filename{0} == '/' && substr($this->fileRoot, -1) == '/') {
$filename = substr($filename, 1);
}
$filename = $this->fileRoot . $filename;
if (!($fh = @fopen($filename, 'r'))) {
$this->err[] = PEAR::raiseError(
$this->errorMessage(IT_TPL_NOT_FOUND) . ': "' .$filename .'"',
IT_TPL_NOT_FOUND
);
return "";
}
$fsize = filesize($filename);
if ($fsize < 1) {
fclose($fh);
return '';
}
$content = fread($fh, $fsize);
fclose($fh);
return preg_replace(
"#<!-- INCLUDE (.*) -->#ime",
"\$this->$getFile('\\1')",
$content
);
} // end func getFile
/** change from preg_replace to preg_replace_callback */
return preg_replace_callback(
"#<!-- INCLUDE (.*) -->#ime",
"\$this->$getFile('\\1')",
$content
谢谢。
答案 0 :(得分:0)
请参见以下小代码以确保是preg_replace_callback()。
var l = window.location;
var c = l;
var t = c.assign;
t('...');
答案 1 :(得分:0)
首先,因为错误消息表明变量$this->$getfile
在任何地方都不存在。您必须查看代码的这一部分。
第二根据您的代码和对$this
的使用,我们可以推断出您的函数为non-static method
。因此,对于您来说,有效的callback
可以是array
中的object
(作为第一项)和方法(作为第二项)
您的情况array
应该是[$this,"name_of_your_method_here"]
看看callbacks以获得更多信息。