PHP 文字列には比較置換
が含まれています
if(strpos($str,??'ok') !== false) {?
?? //
が含まれます}
?
?
//間違った方法
?
?
は文字列 $str に 'ok' が含まれているかどうかを判断しますが、最近、この方法を使用して 'ok' を含む文字列を判断すると検索されないことがわかりました。
成功しましたが、イライラするのは、この文字列が「ok」で始まっていることです。どうして見つからないのでしょうか?
strpos 関数の定義の導入を検索します。srtpos は検索文字列の最初の出現を返します。
現在の座席、この位置は 0 から計算されます。たとえば、「It's」
ok!」の場合、「ok」の位置は 5 です。見つからない場合は false を返します。問題が見つかりました: PHP の変数の型はすべて弱く型付けされており、変数の型を自由に変換できます。0 は整数クラスと見なすことができます。
type は Boolean 型の false とみなすこともできます。strpos を追加して、文字列の検索位置が位置 0 にあることを判断し、関数は 0 を返します。if ステートメントはこれを 0 として扱うべきですか、それとも false として扱うべきですか?
まさにこれが問題のようです。
問題が見つかったら、 に含まれない検索文字列の前に を追加します。
キーワード内の文字は次のとおりです。
つまり、一致がある限り、返される結果は常に >=1 になります。
?
?
?
?
<?php $url1="http://www.163.com"; $url2="www.163.com"; $url3="xxxxhttp://www.163.com"; $rooturl="xxx"; echo "".strrpos($url1,"http://")."\n"; echo "".strrpos($url2,"http://")."\n"; echo "".strrpos($url3,"http://")."\n"; if(strrpos($url1,"http://")!==false && strrpos($url1,"http://")==0){ echo str_ireplace("http://","",$url1)."__1 have \n"; } if(strrpos($url2,"http://")!==false && strrpos($url2,"http://")==0){ echo "2 have \n"; } if(strrpos($url3,"http://")!==false && strrpos($url3,"http://")==0){ echo "3 have \n"; } echo "".$rooturl."\n"; ?>