考虑:
$a = 'How are you?';
if ($a contains 'are')
echo 'true';
假设我有上面的代码, if ($a contains 'are')
,编写语句的正确方法if ($a contains 'are')
什么?
您可以使用strpos()
函数来查找另一个字符串中出现的一个字符串:
$a = 'How are you?';
if (strpos($a, 'are') !== false) {
echo 'true';
}
注意使用!== false
是故意的; strpos()
返回针字符串在 haystack 字符串中开始的偏移量,如果未找到针,则返回布尔值false
。由于 0 是有效偏移量而 0 是 “假”,我们不能使用更简单的结构,如!strpos($a, 'are')
。
您可以使用正则表达式,与其他用户提到的 strpos 相比,它更适合单词匹配,对于诸如票价,关心,凝视等字符串,它也会返回 true。这可以通过使用单词边界在正则表达式中简单地避免。
一个简单的匹配可能看起来像这样:
$a = 'How are you?';
if (preg_match('/\bare\b/',$a))
echo 'true';
在性能方面,strpos 的速度提高了大约三倍,并且考虑到,当我同时进行一百万次比较时,它需要 1.5 分钟的预匹配,并且需要花费 0.5 秒。
这是一个小实用函数,在这种情况下很有用
// returns true if $needle is a substring of $haystack
function contains($needle, $haystack)
{
return strpos($haystack, $needle) !== false;
}