I am working on migrating a php website and getting the following statement
"preg_replace(): The /e modifier is no longer supported, use preg_replace_callback".
When changing to preg_replace_callback, I get an error message "preg_replace_callback(): Requires argument 2, '$this->('\1')', to be a valid callback".
Code:
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
Thanks in Advance.