如何检查字符串是否包含特定单词?

新手上路,请多包涵

考虑:

 $a = 'How are you?';

if ($a contains 'are')
    echo 'true';

假设我有上面的代码,写语句 if ($a contains 'are') 的正确方法是什么?

原文由 Charles Yeung 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 310
2 个回答

现在使用 PHP 8,您可以使用 str_contains 执行此操作:

 if (str_contains('How are you', 'are')) {
    echo 'true';
}

RFC

PHP 8 之前

您可以使用 strpos() 函数用于查找一个字符串在另一个字符串中的出现:

 $haystack = 'How are you?';
$needle   = 'are';

if (strpos($haystack, $needle) !== false) {
    echo 'true';
}

请注意,使用 !== false 是故意的( != false=== true 都不会返回所需的结果); strpos() 返回针头字符串在大海捞针字符串中开始的偏移量,或者布尔值 false 如果没有找到针头。由于 0 是有效的偏移量,而 0 是“错误的”,我们不能使用更简单的结构,例如 !strpos($a, 'are')

原文由 codaddict 发布,翻译遵循 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题