次のコード/文字列があります。
$ids="#222#,#333#,#555#";
次を使用してパーツを検索している場合:
if(strpos($ids,"#222#"))
それは見つかりません。しかし、ハッシュなしで検索しているときは、次を使用して機能します。
if(strpos($ids,"222"))
すでにstrval検索パラメーターに使用してみましたが、これも機能しません。
strpos0 からカウントを開始し、何も見つからない場合は 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)べきです。