strpos用两个词来找

时间:2013-03-01 14:03:49

标签: php strpos

我在stackoverflow上找到了这个例子:

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

但是如何让它搜索两个单词。我需要这样的东西:如果$ a包含单词“are”或“be”或两者都包含echo“contains”;

我试过xor和||

9 个答案:

答案 0 :(得分:8)

只需单独检查两个单词并使用布尔or - 运算符检查$a中是否包含其中一个或两个:

if (strpos($a,'are') !== false || strpos($a,'be') !== false) {
  echo "contains";
}

请注意,由于or - 运算符,如果第一项检查已显示$a包含'是',则不会执行第二次检查(对于'be')。

答案 1 :(得分:4)

另一种选择:在较长的字符串中搜索任意长度的单词。

由于你还没有从所有的strpos答案中找到答案(大多数答案只能用两个单词,试试我的这个超出单词限制的功能。它可以从更长的单词找到任何不同长度的单词string(但不使用strpos)。我认为使用strpos,你必须知道单词的数量,以确定你应该使用多少||或使用循环(排序)。这种方法消除了所有这些和为您提供了一种更灵活的方式来重用您的代码。我认为代码应该是灵活的,可重用的和动态的。测试它,看看它是否符合您的要求!

function findwords($words, $search) {
    $words_array = explode(" ", trim($words));
    //$word_length = count($words_array);

    $search_array = explode(" ", $search);
    $search_length = count($search_array);

    $mix_array = array_intersect($words_array, $search_array);
    $mix_length = count($mix_array);

    if ($mix_length == $search_length) {
        return true;
    } else {
        return false;
    }
}



 //Usage and Examples

    $words = "This is a long string";
    $search = "is a";

    findwords($words, $search);

    // $search = "is a"; // returns true
    // $search = "is long at"; // returns false
    // $search = "long"; // returns true
    // $search = "longer"; // returns false
    // $search = "is long a"; // returns true
    // $search = "this string"; // returns false - case sensitive
    // $search = "This string"; // returns true - case sensitive
    // $search = "This is a long string"; // returns true

答案 2 :(得分:2)

$a = 'how are be';
if (strpos($a,'are') !== false || strpos($a,'be') !== false) {
   echo 'contains';
}

答案 3 :(得分:1)

尝试:

if (strpos($a,'are') !== false || strpos($a,'be') !== false)
    echo 'what you want';

答案 4 :(得分:1)

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

答案 5 :(得分:1)

这是你想要的吗?

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

答案 6 :(得分:1)

if (strpos($a,'are') !== false || strpost($a, 'be') !== false) {
    echo "contains";
}

脑糖: 如果第一个返回true,它将跳过第二个检查。所以两者都可以。如果第一个是假的,那么它只会检查第二个。这称为短路。

答案 7 :(得分:1)

if(strstr($a,'are') || strstr($a,'be')) echo 'contains';
嗯,像这样?

答案 8 :(得分:0)

if (strpos($a,'are') || strpos($a, 'be') {
echo 'contains';
}