次のコード/文字列があります。
$ids="#222#,#333#,#555#";
次を使用してパーツを検索している場合:
if(strpos($ids,"#222#"))
それは見つかりません。しかし、ハッシュなしで検索しているときは、次を使用して機能します。
if(strpos($ids,"222"))
すでにstrval
検索パラメーターに使用してみましたが、これも機能しません。
strpos
0 からカウントを開始し、何も見つからない場合は false を返します。このように偽かどうかを確認する必要があり===
ます...
if (strpos($ids, '#222#') === false) // not found
または!==
、反対のテストが必要な場合に使用します...
if (strpos($ids, '#222#') !== false) // found
詳細については、PHP マニュアルのエントリを参照してください。
strpos を使用する場合、明示的に FALSE をテストしていません。次のように使用します。
if(strpos($string, '#222#') !== FALSE) {
// found
} else {
// not found
}
説明: 次のように使用しています。
if(strpos($string, '#222#')) {
// found
}
これの何が問題なのですか?回答:strpos()
部分文字列が見つかった文字列内の位置を返します。あなたの場合0
、文字列の先頭にあります。ただし、 または0
で明示的なチェックを発行しない限り、PHP では false として扱われます。===
!==
期待どおりに動作しています。strpos()
検索している文字列が単語の先頭にあるため、0 が返されます。等式検索を行う必要があります。
if()
次のようにステートメントを更新します。
if(strpos($ids, '#222') !== false)
{
// string was found!
}
これを試してください:
$ids="#222#,#333#,#555#";
if(strpos($ids,"#222#") !== false)
{
echo "found";
}
!==
の位置が文字なので'#222#'
使う0th (first)
べきです。