2013-07-02 2 views
0

Не могли бы вы рассказать мне, как я могу использовать strops, чтобы узнать, не содержит ли строка ни одного из двух конкретных слов? (? и if)strpos найти несколько слов?

$phrase = “how to use strops?” 
if(strpos($phrase, "?|if") === false) //Is there a way I can detect the presence of 
{    //either words in a sentence using one line of code that has strpos 

    echo “neither word is found”; 
} 
+1

'strpos' говорит вам 1-ое вхождение строки в другой строке Это не может быть лучшим выбором для использования здесь. Если вы хотите использовать его, вам нужно будет использовать его дважды: один раз для '?' И один раз для 'if'. –

+1

Не можете ли вы использовать' preg_match' для этого? 'Preg_match ('/ \? | If/', $ phrase); ' – sbeliv01

+0

" с использованием одной строки кода с strpos "звучит немного как домашнее задание. Также следует отметить, что" strpos "не обнаруживает" слова ", он обнаруживает случаи." if "будет соответствовать" «если» и т. д. Но для ответа на ваш вопрос: if if ((strpos ($ phrase, «?») || strpos ($ phrase, «if»)) === false) ' одна строка , –

ответ

2

strpos() не поддерживает регулярные выражения. Таким образом, вы либо использовать регулярные выражения (как preg_match() или сделать что-то менее сложное, как:.

$phrase = "how to use strpos"; 
$words = array('foo', 'bar'); 

$matches = 0; 
foreach($words as $word) { 
    $matches += (strpos($phrase, $word) !== false) ? 1 : 0; 
} 

printf("%d words matches", $matches); 
-2
if ((strpos($phrase, "?")===FALSE)$$(strpos($phrase,"if")===FALSE)) echo "neither word is found"; 
+0

'strpos' может возвращать' 0', что означает «начало строки». Вы должны использовать 'strpos() === FALSE' * NOT *'! Strpos() '. –

+0

Не заметил. Спасибо за это и извините за мой неправильный ответ! –

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