2012-05-03 4 views
2

PHPでいくつかの検証をしようとしていますが、そのうちの1人は入力された文字列に特定の単語があるかどうかを確認しています。 問題は、指定した単語を最初に置くとコードが機能しないように見えることです。PHP - strposが最初の単語を確認していません

はここのコードです:

$word = "aa bb cc dd"; 
if(strpos($word, 'aa') == false) 
{ 
    echo "wrong input"; 
} 

が、私はbb aa cc ddまたはbb cc dd aaのいずれかに$wordを変更した場合、それが動作します。私はこれをどうやって解決するのだろうか。

+4

その機能については、PHPマニュアルの警告を参照してください。ヒント: '==='(三つ):http://php.net/strpos – hakre

+0

あなたの助けてくれてありがとう!しかし私はマニュアルサイトを知らないので、別のサイトから 'strpos'を取得しています(この例では' === 'を使用していません)。これが私と混同された理由です:)すべての回答しかし! ^^彼らは本当に助けます。 >私が混乱したときはいつでも質問をすることを躊躇する>> – aquatorrent

+0

特定の機能と混同している場合は、マニュアルを参照して、少なくとも私は示唆したいあなたのその。あなたはあなたが望むものは何でも尋ねることができます。ある日あなたは素晴らしい質問をするかもしれないし、代わりに多くのアップフォースを得ることができます。または、あなたは良い答えを置きます。 – hakre

答えて

9

strposはfalseを返します。それ以外の場合は、文字列の位置を返します。

この場合、 'aa'は文字列の先頭にあります。つまり、位置0にあります。 0はfalseと評価されます。あなたはその結果に比較ブールを行う必要があり

:「AA」は0番目の文字であるよう

if(strpos($word, 'aa') === false) 
6

これは、strposが単語の位置を返します。この場合、0は偽です。 ==は一致するかどうかをチェックしません。===はありません。したがって、3つの等価を使用してください。

the docsでもあります。

+0

申し訳ありませんが、あなたはこの記事でそれを言ったときにドキュメントのサイト:)しかし、それは動作します!ありがとう:) – aquatorrent

3

あなたはそれがブールだ場合はそう===を使用してチェックします、これは同じタイプに対して一致し、厳密な比較演算子を使用する必要があります。==を使用して

if(strpos($word, 'aa') === false) 
{ 
    echo "wrong input"; 
} 

は(何が本当述べることができる、緩い比較でありますtrue1stringから離れて)、例えば

"false" == false // true 
"false" === false // false 

falseを返す理由は、文字列とfalseを返すBooleanを比較するためです。

3

aaの位置が0であるため、からfalseになります。

あなたは使用する必要があります:あなたの文字列が存在しない場合は if(strpos($word, 'aa') === false)

4

strposは、0を返します。 0 == falseとしますが、=== false(ブール値ではありません)の場合、==の代わりに===を使用する必要があります。

関連する問題