当前位置: 首页 > 知识库问答 >
问题:

Erropreg_replace_callbackPHP 8[关闭]

须旭
2023-03-14

Não consigo passar没有PHP 8。

O问题estáno“preg_替换_回调”,

$str = "arquivos/foto.jpg";
function protect($str){
    $str = preg_replace_callback('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $str);
    $str = preg_replace_callback('~&#([0-9]+);~e', 'chr("\\1")', $str);
    $str = str_replace("<script","",$str);
    $str = str_replace("script>","",$str);
    $str = str_replace("<Script","",$str);
    $str = str_replace("Script>","",$str);
    $str = trim($str);
    $tbl = get_html_translation_table(HTML_ENTITIES);
    $tbl = array_flip($tbl);
    $str = addslashes($str);
    $str = strip_tags($str);
    return strtr($str, $tbl);
    $str = str_replace("<script","",$str);
    $str = str_replace("script>","",$str);
    $str = str_replace("<Script","",$str);
    $str = str_replace("Script>","",$str);
    $str = trim($str);
    $tbl = get_html_translation_table(HTML_ENTITIES);
    $tbl = array_flip($tbl);
    $str = addslashes($str);
    $str = strip_tags($str);
    return strtr($str, $tbl);
}

致命错误:未捕获类型错误:preg_replace_callback():参数#2($callback)必须是有效的回调,在/var/www/vhosts/dominio中找不到函数“chr(hexdec(1)),或者函数名无效。通用域名格式。br/httpdocs/thumb。php:10堆栈跟踪:#0/var/www/vhosts/dominio。通用域名格式。br/httpdocs/thumb。php(10):preg_replace_callback()#1/var/www/vhosts/dominio。通用域名格式。br/httpdocs/thumb。php(29):protect()#2{main}抛出在/var/www/vhosts/dominio中。通用域名格式。br/httpdocs/thumb。php在线10

共有1个答案

能向晨
2023-03-14

一个estrutura da funição espera:

preg_replace_callback(
    string|array $pattern,
    callable $callback,
    string|array $subject,
    int $limit = -1,
    int &$count = null,
    int $flags = 0
): string|array|null

Veja Qo o SangundoPar Metro“可赎回的美元回调”,DeVe SueMuaFuang-Cou.O.S.塔尔维兹在意甲联赛中感兴趣的信息来源是一家公司,该公司拥有一家公司。

从形式上来说,这是一个很好的例子:

// Callback
function callbackCHR1(){
    return chr(hexdec("\\1"));
}
function callbackCHR2(){
    return chr(hexdec("\\1"));
}
...
$str = preg_replace_callback('~&#x([0-9a-f]+);~ei', callbackCHR1(), $str);


$str = "arquivos/foto.jpg";

function protect($str){
   $str = preg_replace_callback('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $str);
   $str = preg_replace_callback('~&#([0-9]+);~e', callbackCHR2(), $str);
   $str = str_replace("<script","",$str);
   $str = str_replace("script>","",$str);
   $str = str_replace("<Script","",$str);
   $str = str_replace("Script>","",$str);
   $str = trim($str);
   $tbl = get_html_translation_table(HTML_ENTITIES);
   $tbl = array_flip($tbl);
   $str = addslashes($str);
   $str = strip_tags($str);

   return strtr($str, $tbl);

   // *** Nada daqui para baixo vai ser executado pois o return acima irá parar a função
   // Se deseja remover scripts, o strip_tags adicionado acima já o fará. 
   // Acredito que o código tenha sido copiado de forma repetida sem intenção :)

   $str = str_replace("<script","",$str);
   $str = str_replace("script>","",$str);
   $str = str_replace("<Script","",$str);
   $str = str_replace("Script>","",$str);
   $str = trim($str);
   $tbl = get_html_translation_table(HTML_ENTITIES);
   $tbl = array_flip($tbl);
   $str = addslashes($str);
   $str = strip_tags($str);
 
   return strtr($str, $tbl);
}
 类似资料:
  • 当试图建立我的项目,我得到以下错误: 在我的build.gradle存储库中,我没有jCenter,所以我得到的这个错误来自仍然指向jCenter的依赖项。 Gradle离线模式不是我期望的解决方案。 我知道jCenter已经崩溃了,我们都应该搬到mavenCentral(我已经做到了) 有解决办法吗?

  • 嗨,我只知道这是一个古老的问题,但今天只是好奇。正如我们所知connection.close也会关闭preared语句(如果我错了请纠正我)。但是如果我关闭连接然后关闭preared语句会怎样 我会得到一个空指针异常吗? 有人说这取决于jvm的速度。有时,ps.close()会在conn.close完成其工作之前运行并首先关闭,因此您不会得到null指针。 为了测试它,我修改了代码 但是我没有得到

  • 问题内容: 我已经实现了 使用资源的自定义 java.util.Iterator ,该资源应在使用方法的最后释放。该资源可以是 java.sql.ResultSet , java.io.InputStream 等。 使用此迭代器的某些外部库可能不知道必须关闭它。例如: 在这种情况下,有没有办法关闭此迭代器? 更新: 非常感谢您提供当前的答案。我给每个人一个(+1)。当 hasNext() 返回fa

  • 问题内容: 今天,我第一次在本地计算机上启动Redis,然后在关闭Rails应用程序后关闭了所有终端窗口。一个小时后,我再次启动Rails应用程序,并执行以下操作来启动Redis服务器 但是,它告诉我 因此,即使关闭了Mac上的终端窗口,我也认为它仍在运行其较早的实例。 看着这个页面http://redis.io/commands/shutdown,我试图运行 在终端窗口中,但我收到此响应 因此,

  • 我对ExecutorService的javadoc#shutdown方法感到困惑。这些说法不矛盾吗? 启动有序关闭,其中执行以前提交的任务,但不接受新任务。此方法不会等待以前提交的任务完成执行。使用waitTersion执行此操作。 如果它能有序地关闭之前提交的任务,那么它怎么能等它们完成执行呢?

  • 我已经实现了HikariCP,它工作得很好,我现在计划优雅地关闭我的应用程序,我想让HikariCP正确地关闭数据库连接,而不仅仅是关闭java应用程序。我在谷歌上阅读,我可以看到HikariDataSource应该有一个封闭的方法。。。。但事实上,我看不到它的可用性: 在Eclipse中,如果我尝试ds。close()。。。Eclipse没有显示“close”作为HikariDataSource

  • 问题内容: 我试图将我的应用程序中较大且经常使用的部分重构为单独的方法,以使其易于维护。 其中一些方法要求用户输入并进行输入验证,因此我使用了Scanner和System.in,但是当我关闭Scanner时,我也关闭了System.in。 所以我的问题是,我只能通过用CloseShieldInputStream屏蔽System.in来防止System.in关闭,还是应该开始将Scanner传递给方

  • 想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。 刚开始学习java大约一个月,我对arraylist和oop有几个问题 这个arraylist允许我将字符串添加到列表中并存储它,但是如果我有一个类调用簿呢 这三者有什么区别?假设我有大量的输入,比如文件 我有一个班级运动 我该怎么做呢?所以我用许多参数来添加这些输入,因为如果我想添加,我通常会这样做 我也会去