【发布时间】:2020-11-17 03:54:27
【问题描述】:
我的代码中有很多if(mb_stripos($hay, $needle) !== false)。如何将其替换为str_contains()?
例如,我的代码中有这个辅助函数:
<?php
$str1 = 'Hello world!'; //coming from the database
$str2 = 'hello'; // coming from $_GET user input
function str_contains_old(string $hay, string $needle):bool {
return mb_stripos($hay, $needle) !== false;
}
var_dump(str_contains_old($str1, $str2)); // gives bool(true)
如何使它与新的str_contains() 一起工作?
var_dump(str_contains($str1, $str2)); // gives bool(false)
【问题讨论】:
-
考虑到那还没有出来(看起来它甚至是从 php 手册站点中拉出来的??)....它的行为可能会在它实现时发生变化。最后我读到“没有不区分大小写的变体”。
-
这里最糟糕的情况是,您是继续使用我们几十年来一直在做的 stripos... 还是将输入包装在
strtolower()中,以便比较两个相同的大小写字符串 :( 两者同样丑陋。 -
未来可能会添加:“关于此功能不区分大小写:这可能是未来的功能”
-
是的,Stack Overflow,这是 PHP8 发布的函数php.net/manual/en/function.str-contains.php