PHPのstrposは異常な分析と解決策整数型の値を見つけるために

最近の運用同僚反映するために、多くのユーザーが保留状態にコンテンツ投稿を公開

メッセージは、最初の試験後の毛髪に敏感な言葉が含まれている場合、我々は、メカニズムに敏感な単語をチェックするシステムを持っているので、

それは、サブストリングの最初の出現の文字列の位置を検索する機能がよく知られているstrpos、strposを使用しています。

毎回データは、それはそれに使用される、文字列中の文字が存在している見つけたいです。

しかし、調査が見つかりました。いくつかの記事では、我々は練習がキーワードセットを存在しないこと、そしてこれがために何でですか?

調査は、一部の事業者は、純粋にデジタルのキーワードを設定することがわかりました

分析

「私は幸せではない!Xxxx585xxxを行う」、今私たちは、585が表示されるの場所を見つけるのキーワードがあるかどうかを確認する必要があります。の文字列があるとし

理想的には、我々はもちろん、ほとんどの時間は、実際にこのように書くことができる、コードはこれを記述できると思うかもしれません

$文字列 = 'Iドン\'トン幸せ!xxxx585xxx」;
$ numtmp = 585 ;
エコー strpos$文字列$ numtmp)。   

しかし、我々が予期せずエラーに検査結果に表示され、その出力はゼロですが、私たちの期待は20です

チェック585が0であるとき、コンテンツはこの文字列が存在するか否かを判断しますが、それが偽であるかどうかを確認するために5になりながら、今回は、エラーの結果がありました。

理由

最後に、それは何ですので、真の精神を求めているのその精神?参照部分的な情報後に締結

strpos非文字列型を使用したデータはphp_needle_char、キャスト、キャストを作りました。

これは整数タイプである場合Cコードは、CHAR型にキャスト。だから、その文字列の長さがゼロの後に撮影した実際には、585、強力なターン文字列「I」の使用後に得られる炭化物を渡すとき。

PHP数値パラメータの底が強制転換をしたので、今ではそう彼女の内容は、変更を確認するために所有していること、それはエラーの結果が表示され、明確です

 型変換は、次のような状況に分かれていることに注意してください。

 図1は、成形、直接長整数型charに変換され

 リターン1つのコンテンツ2、ブールは、そうstrpost( 'E1'、TRUE)、 '0'、文字 '1' にトランスフェクトしました

 3、ダブルデータタイプ、長整数に最初の強いは、CHAR型に変換しました

 図4に示すように、文字変換の対象オブジェクトID

 5、結果は整数に、strposが意図よりも少なくなります理由を理解するためにここにE_WARNINGトリガーの他のタイプを警告しています。

 ソリューション

私たちは、データの事前に検討されるべきであることを文字データへのシステムニーズ、以来 (文字列)プロセスJieke

// 方案1 
$文字列 = 'Iドン\'トン幸せ!xxxx585xxx」;
$ numtmp = '585' ;
エコー strpos$文字列$ numtmp )。

// 方案2 
$文字列 = 'Iドン\'トン幸せ!xxxx585xxx」;
$ numtmp = 585 ;
エコー strpos$文字列、(文字列$ numtmp)。

このように、私たちは期待どおりの結果を得ます -

 

著者:問題を解決するために、古い<[email protected]>の方法は、一度それを解決することです

おすすめ

転載: www.cnblogs.com/widgetbox/p/12095541.html