对我来说很奇怪,为什么stristr
不匹配数据?它总是打印not found
$data = 'Saturday';
$find = 'sat,sun';
if(stristr($data, $find))
echo 'found';
else
echo 'not found';
答案 0 :(得分:3)
stristr()
函数在另一个字符串中搜索第一次出现的字符串。因此,您需要使搜索字符串不同,为此,您需要将$find
字符串设置为数组并循环遍历它。您可以将sat
和sun
设置为不同的字符串,并使用您的代码进行匹配。
$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" );