为什么PHP没有简单的包含字符串函数?

时间:2017-12-03 03:21:23

标签: php string contains

我很好奇为什么"包含"在PHP中如此复杂的论坛?

我正在学习PHP来自一种名不见经传的Lasso语言。 PHP和Lasso非常相似。

Lasso有一件事,那就是包含字符串函数>>

if($myVar >> 'x')  // this is a contains statement

是否有比以下更简单的方法:

if(strpos($a, 'are') !== false)

这几乎看起来像双重否定。为什么不==真的?这可能是我遇到的最令人困惑的事情。我希望有人可以解释一下!

编辑:我认为我的问题的答案是没有其他包含的快捷代码。感谢大家的帮助。

2 个答案:

答案 0 :(得分:2)

正如文档所说:

  

此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE。

  

返回针存在于相对于haystack字符串开头的位置(与offset无关)。另请注意,字符串位置从0开始,而不是1。

你不能== true,因为如果字符串出现在第0个索引(即字符串的最开头),strpos可以返回0,这将使== true失败1}}检查为0是假y值。

TL; DR:strpos不是“包含”功能,它是“字符串的位置”功能,可以使用作为“包含”功能结果

答案 1 :(得分:1)

应该注意strpos将对包含__toString()方法的对象执行字符串转换

比如这个

    //Enter your code here, enjoy!

class foo{

    public function __toString(){
        return 'hello world';
    }
}

$Foo = new foo;

echo strpos($Foo, "world");

OUPUTS

6

当然,在这种情况下,这是一个非常不可能的情况,但我认为值得一提。

如此sandbox

所示