考虑:
$a = 'How are you?';
if ($a contains 'are')
echo 'true';
假设我有上面的代码,写语句 if ($a contains 'are')
的正确方法是什么?
原文由 Charles Yeung 发布,翻译遵循 CC BY-SA 4.0 许可协议
考虑:
$a = 'How are you?';
if ($a contains 'are')
echo 'true';
假设我有上面的代码,写语句 if ($a contains 'are')
的正确方法是什么?
原文由 Charles Yeung 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为一个好主意是使用 mb_stpos
:
$haystack = 'How are you?';
$needle = 'are';
if (mb_strpos($haystack, $needle) !== false) {
echo 'true';
}
因为此解决方案对所有 Unicode 字符都 区分大小写 且 安全。
但你也可以这样做( _还没有响应_):
if (count(explode($needle, $haystack)) > 1) {
echo 'true';
}
此解决方案对 Unicode 字符也 区分大小写 且 安全。
此外,您 不要在表达式中使用否定, 这增加了代码的可读性。
这是 使用函数 的其他解决方案:
function isContainsStr($haystack, $needle) {
return count(explode($needle, $haystack)) > 1;
}
if (isContainsStr($haystack, $needle)) {
echo 'true';
}
原文由 simhumileco 发布,翻译遵循 CC BY-SA 3.0 许可协议
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答564 阅读✓ 已解决
现在使用 PHP 8,您可以使用 str_contains 执行此操作:
RFC
PHP 8 之前
您可以使用
strpos()
函数用于查找一个字符串在另一个字符串中的出现:请注意,使用
!== false
是故意的(!= false
和=== true
都不会返回所需的结果);strpos()
返回针头字符串在大海捞针字符串中开始的偏移量,或者布尔值false
如果没有找到针头。由于 0 是有效的偏移量,而 0 是“错误的”,我们不能使用更简单的结构,例如!strpos($a, 'are')
。