如何执行不区分大小写的str_contains



我的代码中有很多if(mb_stripos($hay, $needle) !== false)。如何用str_contains()替换它?

例如,我的代码中有一个助手函数:

<?php
function str_contains_old(string $hay, string $needle): bool
{
return mb_stripos($hay, $needle) !== false;
}
$str1 = 'Hello world!';
$str2 = 'hello';
var_dump(str_contains_old($str1, $str2)); // gives bool(true)
$str1 = 'Część';
$str2 = 'cZĘŚĆ';
var_dump(str_contains_old($str1, $str2)); // gives bool(true)
$str1 = 'Część';
$str2 = 'czesc';
var_dump(str_contains_old($str1, $str2)); // gives bool(false)

如何使用新的str_contains()

var_dump(str_contains('Hello world!', 'hello')); // gives bool(false)

演示

只需事先将字符串和haystack转换为小写

$string = strtolower($originalString);
$haystack = strtolower($originalHaystack);
$isMatched = str_contains($originalHaystack,$originalString);

您想要不区分大小写的str_contains()版本简短的回答是:没有。

长话短说:区分大小写取决于编码和区域设置。当您将这些信息添加到假设的str_icontains()时,您已经重新创建了mb_stripos()。TL;DR-不要这么做。

最新更新