将我的 VPS 升级到 PHP 7.2 后,我的网站出现以下错误:
PHP 已弃用:函数 create_function() 在 /home/nickname/public_html/framework/web/CHttpRequest.php 第 968 行中已弃用
该文件中的代码是:
usort($languages,create_function('$a,$b','if($a[0]==$b[0]) {return 0;} return ($a[0]<$b[0]) ? 1 : -1;'));
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决它,请帮助我,谢谢!
所以我有一个以前工作正常的插件,但几天后它向我抛出一个错误:
PHP 致命错误:未捕获错误:调用未定义的函数 create_function()
经过一番搜索,我发现这是因为create_function()PHP 8 中已弃用。
现在导致问题的确切行是这样的:
$callback_2 = create_function('$matches', 'return "[" . str_replace("|", "", $matches[1]) . "]";');
Run Code Online (Sandbox Code Playgroud)
我尝试将其更改为:
$callback_2 = create_function('$matches', 'return "[" . str_replace("|", "", $matches[1]) . "]";');
Run Code Online (Sandbox Code Playgroud)
但这不起作用。因此,如果有人能指出我正确的方向,而且我对 PHP 很陌生,那就太好了。
在查看PHP的create_function时,它说:
如果您使用的是PHP 5.3.0或更高版本,则应使用本机匿名函数。
我想重新创建与create_function使用相同的功能anonymous function。我看不到方法或正确方法。
本质上,如何更改以下内容,以便不再使用create_function但仍可以输入要使用自己的参数求值的自由格式公式?
$newfunc = create_function(
'$a,$b',
'return "ln($a) + ln($b) = " . log($a * $b);'
);
echo $newfunc(2, M_E) . "\n";
Run Code Online (Sandbox Code Playgroud)
示例取自PHP create_function页面。
注意:
看起来与上面的示例一样,我可以传入任意字符串,并为我编译它。我可以不使用来以某种方式做到这一点create_function吗?
我即将CREATE FUNCTION用MySQL写一个,我想知道是否CREATE TEMPORARY TABLE计入 flag MODIFIES SQL DATA。函数不会修改任何永久表,只是修改临时表,它是为了优化目的而创建的。
我应该使用 flagMODIFIES SQL DATA还是仅使用READS SQL DATA?使用或标记的
真正好处是什么?MODIFIES SQL DATAREADS SQL DATA
我正在尝试在Internet上部署我的网站,以便在真实环境中对其进行测试.它是某种文本编辑器,用户可以使用正则表达式和用户定义的回调函数.
我有一些preg_replace_callback()函数的问题.我的托管有早于5.3的PHP版本,我不能在我的代码中使用匿名函数(我在localhost上有PHP 5.4).所以我必须重写这部分代码(在localhost上正常工作)
$newString = preg_replace_callback(
'#' . $this->pattern . '#' . $this->modifiers,
function($match)
{
return eval('return ' . $this->replacement . ';');
},
$string);
Run Code Online (Sandbox Code Playgroud)
在这一点上,我不是在谈论使用eval()的危险 - 这个问题稍后会得到适当的关注("禁止"单词列表检查等).问题是我的尝试如下
$replacement = $this->replacement;
$newString = preg_replace_callback(
'#' . $this->pattern . '#' . $this->modifiers,
create_function('$match', '
global $replacement;
return eval(\'return \' . $replacement . \';\');
'),
$string);
Run Code Online (Sandbox Code Playgroud)
不起作用,没有错误发生.我的代码出了什么问题?
任何帮助将非常感激.
新信息.我试过这个
Class A
{
public function check()
{
$string = 'series 3-4';
$pattern = 'series[ ]*(\d+)[ ]*-[ ]*(\d+)';
$modifiers = 'um';
$replacement = '$match[2] == …Run Code Online (Sandbox Code Playgroud) 我有一个类,其中一些方法依赖于一个参数.编写此方法的最佳方法是什么?
例:
class Test{
var $code;
function Test($type){
if($type=="A"){
$this->code=create_function(/*some args and some code*/);
}
else if($type=="B"){
$this->code=create_function(/*some args and some code*/);
}
}
function use(/*some args*/){
return call_user_func($this->code,/*some args*/);
}
}
Run Code Online (Sandbox Code Playgroud)
class Test{
var $type;
function Test($type){
$this->type=$type;
}
function use(/*some args*/){
if($this->type=="A"){
//some code
}
else if($this->type=="B"){
//some code
}
}
}
$test=new Test("A");
$test->use();
Run Code Online (Sandbox Code Playgroud)
你会选择哪种方式?
我想添加mysql函数:
CREATE FUNCTION `chf_get_translation`(translation_id INT, site_lang INT)
RETURNS text CHARSET utf8
BEGIN
DECLARE translation TEXT;
SELECT title
INTO translation
FROM chf_translations
WHERE key_id = translation_id
AND lang_id = site_lang;
RETURN translation;
END
Run Code Online (Sandbox Code Playgroud)
但得到错误:
1064 - 您的SQL语法出错; 检查与MySQL服务器版本对应的手册,以便在第3行的"'附近使用正确的语法