Call to undefined function str_contains() php

My code works on localhost via APACHE, but when I hosted a website with all the same files and code i get this message:
Fatal error: Call to undefined function str_contains() in /storage/ssd3/524/16325524/public_html/static/header.php on line 55
PHP Code where error shows:
<?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>';
}
}
?>
Answer
Solution:
If you look at the manual page for str_contains it says the function was introduced in PHP 8. I suspect your host is on PHP 7 (or possibly lower).
You can define a polyfill for earlier versions (adapted from 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);
}
}
Answer
Solution:
str_contains() was introduced in PHP 8 and is not supported in lower versions.
For lower PHP versions, you can use a workaround with strpos():
if (strpos($haystack, $needle) !== false) {
// haystack contains needle
}
Share solution ↓
Additional Information:
Link To Answer People are also looking for solutions of the problem: call to a member function format() on string
Didn't find the answer?
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Similar questions
Find the answer in similar questions on our website.
Write quick answer
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.