0

我一直在使用 stripos 来匹配字符串中的单个关键字,但是您只能定义输入字符串、要搜索的字符串和偏移量……是否有一种功能或方法可以要求找到两个关键字。例如 Happy 和 Birthday,通过分别定义 Happy 和 Birthday 来匹配 Happy 21st Birthday 或 Happy Freaking Birthday。因此,除非两个关键字都存在,否则匹配将返回 false。

4

3 回答 3

2

显然正则表达式更有效,但你必须这样做:

if(strpos($yourString,"Happy") !== false && strpos($yourString,"Birthday") !== false){
    // do stuff
}
于 2011-04-27T02:26:17.427 回答
1
return strpos($keyword1, ...) !== false && strpos($keyword2) !== false
于 2011-04-27T02:27:22.793 回答
1

最简单的方法可能只是和两个strpos电话

$twoNeedles = function($n1,$n2,$hay,$caseIns=false)
                {
                  $f = $caseIns ? 'stripos' : 'strpos';
                  return ($f($hay, $n1) !== false) 
                      && ($f($hay, $n2) !== false);};

echo $twoNeedles('Happy', 'Birthday', 'Happy Freakin Birthday d00d'); //true
echo $twoNeedles('Happy', 'Ice Cream', 'Happy Freakin Birthday d00d'); //false
echo $twoNeedles('HaPpY', 'bIrTH', 'Happy Freakin Birthday d00d', true); //true

因为我喜欢想太多

$manyNeedles =  function($n,$hay,$caseIns=false)
                {
                  $c = $caseIns ? 'stripos' : 'strpos';
                  $f = function($a,$b) use ($c,$hay) 
                         {return $a && ($c($b,$hay) !== false);};
                  return array_reduce($n,$f,true);
                };

$myNeedles = array('happy', 'birthday', 'to', 'you');
echo $manyNeedles($myNeedles, 'hap hap happy birf birthday to j000000 and you');

现在我最好在我这样做之前退出,implodeeval不是减少

于 2011-04-27T02:29:19.623 回答