2017-07-08 22 views
-1

私はPHP 7.0を使用しています。文字列比較のみを行います。 PHPはそれを行うstrcmp関数をstrposしていますが、どの関数が文字列比較を高速かつ安全に行うかわかりません。私は多くの文字列を比較する必要があり、どの関数がより速い結果をもたらすかを知りたい。strpos strcmpのPHP文字列比較

私のテストでは、strposは配列文字列の比較ではNULLを返しませんが、strcmpはNULLを返します。 PHP 7ではテストしましたが、ホスティングに他のPHPバージョンを使用する可能性があります。この問題は機密扱いになります。文字列比較を使用する場合は、(strpos($ x、$ y))を使用するといいですか?

+0

同じものかどうかを調べようとしている場合: if($ a == $ b){//何か} – Difster

+0

AA ....私はちょうどそれを考えています。 .. anseringに感謝!比較するのが安全かどうか(strpos($ x、$ y))? – fnclovers

+0

私はそれをしたいことを完全に理解していないかもしれないので、あなたはその文書を読むことをお勧めします。 http://php.net/manual/en/function.strpos.php – Difster

答えて

1

strpos - あなたはユーザー入力または何かからになるだろうのような文字列は、テキストの文字列である場合はバイナリセーフな文字列比較

- 文字列

strcmpの中のサブストリングが最初に現れる位置を探しますこれはバイナリではないので、strcmpは過剰なようです。 私はDifsterの提案を使用します。 (のstrcmp($、$ b)は)場合([$オフセットINT ____ = 0、]文字列$干し草、混合$針)これはstrposためのメソッドシグネチャである

混合strpos次いでクリーナーう読み取ります$ bが$ aにある場合真理値を返します。だから私は、文字列が別の文字列の中にあるかどうかを見たい場合や、文字列がどこにあるのかを知りたければ、2つの文字列が等しいかどうか比較するためには使用しません。