我的代码中有很多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-不要这么做。