调用未定义函数 str_contains() php

新手上路,请多包涵

我的代码通过 APACHE 在本地主机上运行,但是当我托管一个包含所有相同文件和代码的网站时,我收到此消息: 致命错误:调用 /storage/ssd3/524/16325524/public_html/static/ 中的未定义函数 str_contains()第 55 行的 header.php

错误显示的PHP代码:

 <?php
                            $menu = getAllData('meni');
                            global $korisnik;
                            for ($i = 0; $i < count($menu); $i++){
                                if(isset($_SESSION['korisnik'])){
                                    if(str_contains($menu[$i]->naziv, 'login') || str_contains($menu[$i]->naziv, 'reg')){
                                        continue;
                                    }
                                    echo  '<li><a href='.$menu[$i]->putanja.'>'.$menu[$i]->naziv.'</a></li>';
                                }
                                else {
                                    if (str_contains($menu[$i]->naziv, 'profile') || str_contains($menu[$i]->naziv, 'out')) {
                                        continue;
                                    }
                                    echo '<li><a href=' . $menu[$i]->putanja . '>' . $menu[$i]->naziv . '</a></li>';
                                }
                            }
                            ?>

原文由 adam nikk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 649
2 个回答

str_contains 的手册页 说该函数是在 PHP 8 中引入的。我怀疑您的主机使用的是 PHP 7(或可能更低)。

您可以为早期版本定义一个 polyfill(改编自 https://github.com/symfony/polyfill-php80

 if (!function_exists('str_contains')) {
    function str_contains(string $haystack, string $needle): bool
    {
        return '' === $needle || false !== strpos($haystack, $needle);
    }
}

原文由 rjdown 发布,翻译遵循 CC BY-SA 4.0 许可协议

str_contains() 是 PHP 8 引入的,低版本不支持。

对于较低的 PHP 版本,您可以使用 strpos() 的解决方法:

 if (strpos($haystack, $needle) !== false) {
  // haystack contains needle
}

原文由 Petr Hejda 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏