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

$a = 'How are you?';

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

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

你有没有听说过“preg_match”或“regexps”?

请欣赏我的功能非常合适 $string = 'how are you'; $find = 'are'; function iscontain($string,$find){ $check = strpos($string, $find); if ($check === false) { return 0; }else{ return 1; } } if(iscontain($string,$find)){ echo "true"; }else{ echo "flase"; }

答案

您可以使用strpos()用于查找另一个字符串内部发生的函数:

$a = 'How are you?';

if (strpos($a, 'are') !== false) {
    echo 'true';
}

请注意,使用!== false是故意的; strpos()返回干草堆字符串中针串开始的偏移量,false如果没有找到针,则返回布尔值。由于0是一个有效的偏移量,0是“falsey”,所以我们不能使用更简单的构造!strpos($a, 'are')

  1. 我发现的一件事是,如果“是”是第一个字,那么上面的代码将失败,因为它返回“0”,这可以被认为是错误的!为避免这一点,它应该阅读如果(strpos(“x”。$ a,’是’)!== false)
  2. 当您使用!==时,“0”不被视为“false”。只有在使用!=时才被考虑。
  3. 晚会很晚,但要小心。这也将返回字符串“你在乎吗?
  4. 当然是的,它会返回true,因为字符串包含’是’。如果你是专门为字看,然后你就需要做更多的检查等,例如,检查是否有一个人物或A之前和之后E.空间
  5. 上面非常好的评论!我从来没有使用!=或==,毕竟!==和===是最好的选择(在我看来)的所有方面考虑(速度,准确性等)。

你可以使用正则表达式,与其他用户提到的strpos相比,strokes更适合字符匹配,它也可以返回真实的字符串,如票价,照顾,凝视等。这可以通过使用字边界在正则表达式中简单地避免。

一个简单的匹配可以看起来像这样:

$a = 'How are you?';

if (preg_match('/\bare\b/',$a))
    echo 'true';

在性能方面,速度提高了三倍,记得当我做了一百万次比赛的时候,比赛用了1.5秒完成,而且用了0.5秒。

添加评论

友情链接:蝴蝶教程