1

次のコード/文字列があります。 $ids="#222#,#333#,#555#";

次を使用してパーツを検索している場合:

if(strpos($ids,"#222#"))

それは見つかりません。しかし、ハッシュなしで検索しているときは、次を使用して機能します。

if(strpos($ids,"222"))

すでにstrval検索パラメーターに使用してみましたが、これも機能しません。

4

4 に答える 4

6

strpos0 からカウントを開始し、何も見つからない場合は false を返します。このように偽かどうかを確認する必要があり===ます...

if (strpos($ids, '#222#') === false) // not found

または!==、反対のテストが必要な場合に使用します...

if (strpos($ids, '#222#') !== false) // found

詳細については、PHP マニュアルのエントリを参照してください。

于 2013-04-11T13:07:33.353 に答える
1

strpos を使用する場合、明示的に FALSE をテストしていません。次のように使用します。

if(strpos($string, '#222#') !== FALSE) {
    // found
} else {
    // not found
}

説明: 次のように使用しています。

if(strpos($string, '#222#')) {
    // found
}

これの何が問題なのですか?回答:strpos()部分文字列が見つかった文字列内の位置を返します。あなたの場合0、文字列の先頭にあります。ただし、 または0で明示的なチェックを発行しない限り、PHP では false として扱われます。===!==

于 2013-04-11T13:07:43.683 に答える
0

期待どおりに動作しています。strpos()検索している文字列が単語の先頭にあるため、0 が返されます。等式検索を行う必要があります。

if()次のようにステートメントを更新します。

if(strpos($ids, '#222') !== false)
{
    // string was found!
}
于 2013-04-11T13:07:39.707 に答える
0

これを試してください:

$ids="#222#,#333#,#555#";
if(strpos($ids,"#222#") !== false)
{
    echo "found";
}

!==の位置が文字なので'#222#'使う0th (first)べきです。

于 2013-04-11T13:09:30.133 に答える