我在stackoverflow上找到了这个例子:
if (strpos($a,'are') !== false) {
echo 'true';
}
但是我如何让它搜索两个词。我需要这样的东西:如果 $a 包含单词“are”或“be”或两者都回显“contains”;
我试过异或和||
只需分别检查这两个词并使用布尔运算or
符来检查其中一个或两个是否包含在$a
:
if (strpos($a,'are') !== false || strpos($a,'be') !== false) {
echo "contains";
}
请注意,由于 -or
运算符,如果第一个检查已经显示$a
包含“are”,则不会执行第二次检查(对于“be”)。
由于您还没有从所有 strpos 答案中选择一个答案(其中大多数应该只使用两个单词,请尝试我的这个超过字数限制的函数。它可以从较长的字符串中找到任何不同长度的单词(但是不使用 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
$a = 'how are be';
if (strpos($a,'are') !== false || strpos($a,'be') !== false) {
echo 'contains';
}
尝试:
if (strpos($a,'are') !== false || strpos($a,'be') !== false)
echo 'what you want';
if ((strpos($a,'are') !== false) || (strpos($a, 'be') !==false) {
echo 'contains';
}
这是你想要的吗?
if ((strpos($a,'are') !== false) || (strpos($a,'be') !== false)) {
echo 'contains';
}
if (strpos($a,'are') !== false || strpost($a, 'be') !== false) {
echo "contains";
}
Brain Candy:如果第一个返回 true,它将跳过第二个检查。所以两者都可能是真的。如果第一个是假的,那么它只会检查第二个。这称为短路。
if(strstr($a,'are') || strstr($a,'be')) echo 'contains';
哼,像这样?
if (strpos($a,'are') || strpos($a, 'be') {
echo 'contains';
}