2012-01-16 14 views
-1

私はユーザー入力を検索して に1日の名前が入力されているかどうかを調べる関数を作成しようとしています。何らかの理由で、この関数は、2つの曜日名が入力された場合にのみtrueを返します。これは簡単なことかもしれませんが、私はそれを理解していないようです。 ==これは試してみてくださいstripos手入力配列の要素が文字列内にあるかどうかを確認するにはどうすればよいですか?

+0

このif(stripos($ query、$ day)=== FALSE){'を試してください。私は3 '='ではなく2を使用しています。 – Virendra

+0

2つのエントリを入力すると、現在の関数が真になるのはなぜですか? –

答えて

1

あなたが使用する必要があります

if (stripos($query, $day) === FALSE){ 

ではなく

if (stripos($query, $day)==FALSE){ 

名は、クエリの開始に発見された場合、それが返されます、これは、「0」最初の文字の位置が偽である0になりますので。それが存在するかどうかをチェックするには、値ではなくタイプをチェックする===を使用します。

また、forループの代わりにin_array関数を使用することもできます。

if (isset($_POST['query'])) 
{ 
    $query = $_POST['query']; 
    $dow = array('monday','tuesday','wednesday','thursday','friday','saturday','sunday'); 
    if (in_array($query, $dow) 
    { 
     echo"hurray"; 
    } 
} 
2

:ここ

は私のコードです

if (isset($_POST['query']) { 
    $dow = array('monday','tuesday','wednesday','thursday','friday','saturday','sunday');  
    if (in_array(trim(strtolower($_POST['query'])), $dow) echo"hurray"; 
} 
0

が表示されない===

<?php 
if(isset($_POST['query'])) 
{ 
    $query=$_POST['query']; 
    $dow=array('monday','tuesday','wednesday','thursday', 
     'friday','saturday','sunday'); 

    foreach($dow as $day) 
    { 
     if(stripos($query, $day)==FALSE) 
     { 
     } 
     else 
     { 
      echo"hurray"; 
     } 
    } 
} 
?> 

<html> 
    <form action="datefunctiontester.php" method="post"> 
     <p>Search</p><input type="text" name="query"> 
     <input type="submit"> 
    </form> 
</html> 
0

この場合にはstripos()を使用する必要はありません。

// Force lower case for comparisons 
$query = strtolower($_POST['query']); 
$dow = array('monday','tuesday','wednesday','thursday', 
    'friday','saturday','sunday'); 

$found = in_array($query, $dow, true); 

if($found) 
{ 
    // do something 
} 
関連する問題