STRiSTR与字符串中的数据不匹配

时间:2016-05-27 10:39:50

标签: php

对我来说很奇怪,为什么stristr不匹配数据?它总是打印not found

$data = 'Saturday';

$find = 'sat,sun';

if(stristr($data, $find))
    echo 'found';
else
    echo 'not found';

5 个答案:

答案 0 :(得分:3)

stristr()函数在另一个字符串中搜索第一次出现的字符串。因此,您需要使搜索字符串不同,为此,您需要将$find字符串设置为数组并循环遍历它。您可以将satsun设置为不同的字符串,并使用您的代码进行匹配。

Online Check

$data = 'Saturday';

$find = 'sat,sun';
$find_arr = explode(",", $find);

foreach($find_arr as $find_val){
    if(stristr($data, $find_val))
        echo 'found';
    else
        echo 'not found';
}

结果应该是第一个found和第二个not found

答案 1 :(得分:2)

如果您发现星期六,则会显示结果。

在你的情况下,它会考虑“坐着,晒太阳”。 一个字,以便它会尝试找到“坐着,晒太阳”。在$data中,结果将显示“未找到”。

答案 2 :(得分:0)

stristr()找到第一次出现的字符串。您也可以使用preg_match代替stristr()

尝试

<?php
   $find = "sat,sun";
   $data = 'Sat';

   if (preg_match("/\b".$data."\b/i", $find, $match))
      print "Match found!";
   else
        print "not match";
?>

答案 3 :(得分:0)

您应该使用 stripos 而不是 stristr 以获得最佳效果。 stripos 功能比 stristr 更快,内存更少。

stripos()如果未找到针,则返回FALSE。因此,如果您只是需要知道是否存在发生,请按以下方式使用它:

echo stripos($data, 'sat,sun') !== false ? 'found' : 'not found';

根据评论请求修改解决方案代码:

要检查您的$ data值是否为sat或sun,请在循环中执行:

$data = 'Sunday';

$weekend = 'sat,sun';

$days = explode(',', $weekend);
$index = 0;
$found = false;

while (!$found && isset($days[$index])) {

     $found = (stripos($data,$days[$index]) !== false) ? true : false;
     $index++;
}

echo $found ? 'found' : 'not found';

答案 4 :(得分:-1)

试试这个代码

HTML :: 
<a class="test" href="#">target 1</a>
<a class="test" href="#">target 2</a>

JQUERY :: 
$( ".test:first").css( "font-style", "italic");
$( ".test:first").css( "font-weight", "bold" );