2016-05-27 17 views
1

それは私にとって奇妙なのですが、なぜstristrにデータが一致しませんか?常に印刷されますnot foundSTRISTRが文字列のデータと一致しません

$data = 'Saturday'; 

$find = 'sat,sun'; 

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

strisをお試しくださいtrは配列を与える第2のパラメータ文字列を受け取ります –

+1

^配列ではありません – splash58

+0

@SunilPachlangiaその文字列。 –

答えて

0

stristr()文字列の最初の出現を検索します。 stristr()の代わりにpreg_matchを使用することもできます。

は、あなたが最良の結果を得るためstripos代わりのstristrを使用する必要があります

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

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

ありがとうございます。あなたの答えスイートは私の最も必要なものです。 –

2

「土曜日」が見つかった場合は、結果が表示されます。それは$dataで「座っ日」を見つけようとしますと、結果「が見つかりません」と表示されるように、あなたのケースで

それは、一言に「座っ日」を検討します。

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ためであるべきです。

0

を試してみてください。 ストライプ機能は、stristrよりも速く、メモリを消費しません。

stripos()針が見つからない場合はFALSEを返します。だから、あなただけocurrencesがある場合は、次のようにそれを使用する、知る必要がある場合:

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

コメント要求からソリューションコード編集:

あなたの$データ値が座っているかどうかを確認OR日、実行するにはそのループの中で:

$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'; 
+1

解決策はまだ「見つかりません」と表示されます。 –

+0

私はstristrの代わりにstriposを使用してあなたのリクエストに出席するソリューションコードを書いた –

-1

この1つのコード

$f = 'Saturday'; 
$data = 'sat,sun'; 

$find = strtolower(substr($f, 0,3)); 

$str = stristr($data , $find); 

if($str) 
    echo 'found'; 
else 
    echo 'not found'; 
関連する問題