2012-05-07 2 views
3

Предполагая, что это правильно работает, если указано, что подстрока находится в строке, существует ли более сжатый способ сделать это?PHP, 'Haystack содержит иглу?'

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-так дорого). – alex

+0

Хм, у вас там есть точка. – bfavaretto

3

Не совсем. Это действительно зависит от ваших предпочтений, для которых один из них является самым ясным способом выразить то, что вы делаете. Некоторые альтернативы:

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

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

Наиболее распространенным подходом является, вероятно, использовать строгий FALSE сравнение, так что если вы работаете над проектом с открытым исходным кодом или есть много других людей, используя свой код, рассмотрим этот вариант.

Смежные вопросы