如何检查字符串是否不包含特定短语?

时间:2014-01-10 17:48:16

标签: php

如何反转How do I check if a string contains a specific word in PHP?

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

如果trueare ,则回复$a

4 个答案:

答案 0 :(得分:24)

这里的代码:

if (strpos($a, 'are') !== false) {
    // The word WAS found
}

表示在字符串中找到单词WAS。如果删除NOT(!)运算符,则表示已撤消该条件。

if (strpos($a, 'are') === false) {
    // The word was NOT found
}

===非常重要,因为如果单词'are'位于字符串的最开头,strpos将返回0,并且因为0松散地等于FALSE,所以你会因为找出错误而感到沮丧。 ===运算符使得它非常字面地检查结果是否为布尔值false而不是0。

举个例子,

if (!strpos($a, 'are')) {
    // String Not Found
}

如果$ a =“你今晚过来了吗?”,这段代码会说字符串'are',因为'are'的位置是0,字符串的开头。这就是使用===错误检查非常重要的原因。

答案 1 :(得分:2)

使用strstr():

if (!strstr($var, 'something')) {
    // $var does not contain 'something'
}

或strpos():

if (strpos($var, 'something') === false) {
    // $var does not contain 'something'
} 

如果你想要不区分大小写的搜索,请str pos()。

strpos()有点faster

答案 2 :(得分:0)

当你看到它时,你可能会踢自己......

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

答案 3 :(得分:0)

试试这个

$string = "This is beautiful world.";
$$string = "Beautiful";
    preg_match('/\b(express\w+)\b/', $string, $x); // matches expression

    \b is a word boundary
    \w+ is one or more "word" character
    \w* is zero or more "word" characters
    enter code here

请参阅escape sequences上有关PCRE的手册。