2012-05-07 5 views
3

これは、部分文字列が文字列内にあるかどうかを伝えるために適切に動作すると仮定します。これを行うためのより簡潔な方法がありますか?PHP、 'Haystack contains Needle?'

if(is_int(strpos($haystack, $needle))){ 
    ... 
} 

答えて

5

私はそうしません。 FALSEと厳密に比較するだけです。

$found = strpos($haystack, $needle) !== FALSE; 
+0

なぜですか? 'is_int'のように見え、より簡潔になりました。 – bfavaretto

+1

@bfavarettoこれは不要な余分な関数呼び出しです。これはとりわけ高価です(http://stackoverflow.com/questions/3691625/why-are-php-function -calls-so-expensive)です。 – alex

+0

ええ、そこにポイントがあります。 – bfavaretto

3

実際にはありません。それはあなたがしていることを表現するための最も明白な方法のどれがあなたの好みに本当にかかります。いくつかの選択肢:

if(strpos($h, $n) !== FALSE){ 
    // stuff 
} 

if(strpos($h, $n) > -1){ 
    // stuff 
} 

最も一般的なアプローチは、厳密なFALSE比較を使用することが考えられますので、あなたは、オープンソースプロジェクトの作業や、あなたのコードを使用している他の多くの人々を持っている場合、そのオプションを検討してください。