2012-04-11 15 views
3

私はフォーム上で素早く重複チェックをしています。 2つの文字列を比較するとき、私はこのような何かしようとしていた:文字列の比較。 'like'の文字を見つける

if (stripos($_SESSION['website'], $f['website'])) 

を、私はこのエラーを取得しています:

Fatal error: Call to undefined function: stripos() in... 

私は$_SESSION['website']がWWWで基本的にあれば、それは完全に一致する必要はありません。 google.com、私は$f['website]場合stripostrueを返すようにしたいと思いますwww.goog.com

は、私が何か間違ったことをやっている、またはこれを行うには良い方法はありますか?

私はいくつかのテストを行っていましたが、私の$_SESSION['website']変数にwww.comが含まれていることがわかりました。私の$f['website]も変わります。いいえ、strpos本当にそれを返すべきではないですか?

+7

'stripos()'はPHP5で導入されました。どのバージョンを実行していますか?代わりに、文字列のコピーを作成し、 'strtolower()'を使ってすべてが小文字であることを確認し、 'strpos()'を使って検索タームの位置を見つけ出し、元の文字列に適用することができます。 –

+0

ここでは2つの異なる質問があります。最初は致命的なエラーで、@MikeBのように見えます。 2つ目は、 'stripos'関数だけで処理できるものよりもはるかに複雑な処理をしたいということです。 [striposのドキュメント](http://php.net/manual/en/function.stripos.php)には、「文字列内の大文字と小文字を区別しない部分文字列の最初の出現位置を見つける」と書かれています。 'stripos'は' $ f ['website'] 'が 'www.goog'の場合は** 0 **(真ではない)を返しますが、www.goog.comではfalseを返します。 – Travesty3

+0

@MikeB、私はPHP5を実行していますが、あなたの 'strtolower()'メソッドは現在動作します。ありがとう! @ Travesty3、私は文字列比較を行う方法について他の提案がありますか? – etm124

答えて

5

stripos()マニュアルはPHP 5以降のコアにのみ存在します。 striposが存在しない場合は、PHP 4を使用していることを示唆しています。PHP 4は古くなっています。アップグレードをお勧めします。いくつかの非常識な理由のためにあなたが本当に、あなたが常に同じ効果を持つことになる、strposを呼び出す前に、小文字に2つの文字列を強制することができないことができる場合:

<?php 
// PHP 5. 
$pos = stripos('www.google.com', 'google.com'); 

// PHP 4. 
$pos = strpos(strtolower('www.google.com'), strtolower('google.com')); 

言った、あなたのコードにもっと何かがあります:あなたは」文字列$fooが文字列$barで始まる場合は0を返すif(stripos($foo, $bar))をチェックし直してください。代わりにif(stripos($foo, $bar) !== false)で確認してください。

別の注記:私はstriposがあなたを助けるとは思わない。あなたはwww.google.comwww.goog.comと言いましたが、これはまったく別のものです。後者は前者の部分文字列ではなく、部分文字列の開始位置を確認するストライプスは "緩やかな比較"を行いません。

"好き"で、用語が配列になっている場合は、similar_text()関数をチェックして、2つの異なる文字列の類似性を示すことができます。例として:

<?php 
$similarity = 0; 
similar_text('www.goog.com', 'www.google.com', $similarity); 
var_dump($similarity); 

上記のコードは、パーセントで二つの文字列の類似度である、float(92.307692307692)$similarityを設定します。自然に類似点の閾値を自分で決めることができます。

+0

+1 'similar_text'関数について知りませんでした。私はこれのようなことをやることははるかに多くの作業を必要とすると思ったでしょう。 – Travesty3

-2

そのa strpos( 'Your String or Websitename'、 'Term Search');そのそれが返す一致を見つけた場合

は真、それ以外の場合はfalseを返します

$a=strpos($_SESSION['website'], $f['website']) 

場合($ == TRUE) {

//do stuff 

}他 {

//other stuff 
}