Поиск слов в строке - PullRequest
       7

Поиск слов в строке

2 голосов
/ 06 августа 2011

Может кто-нибудь подсказать, как мне это сделать: Скажите, если бы у меня была строка $text, которая содержит текст, введенный пользователем. Я хочу использовать оператор if, чтобы найти, содержит ли строка одно из слов $word1 $word2 или $word3. Тогда, если это не так, позвольте мне запустить некоторый код.

if ( strpos($string, '@word1' OR '@word2' OR '@word3') == false ) {
    // Do things here.
}

Мне нужно что-то подобное.

Ответы [ 6 ]

2 голосов
/ 06 августа 2011

Более гибкий способ - использовать массив слов:

$text = "Some text that containts word1";    
$words = array("word1", "word2", "word3");

$exists = false;
foreach($words as $word) {
    if(strpos($text, $word) !== false) {
        $exists = true;
        break;
    }
}

if($exists) {
    echo $word ." exists in text";
} else {
    echo $word ." not exists in text";
}

Результат: слово1 существует в тексте

2 голосов
/ 06 августа 2011
if ( strpos($string, $word1) === false && strpos($string, $word2) === false && strpos($string, $word3) === false) {

}
1 голос
/ 06 августа 2011

Определите следующую функцию:

function check_sentence($str) {
  $words = array('word1','word2','word3');

  foreach($words as $word)
  {
    if(strpos($str, $word) > 0) {
    return true;
    }
  }

  return false;
}

И вызовите ее следующим образом:

if(!check_sentence("what does word1 mean?"))
{
  //do your stuff
}
0 голосов
/ 06 августа 2011

вы можете использовать preg_match, вот так

if (preg_match("/($word1)|($word2)|($word3)/", $string) === 0) {
       //do something
}
0 голосов
/ 06 августа 2011

Может быть лучше использовать stripos вместо strpos, потому что он не учитывает регистр.

0 голосов
/ 06 августа 2011

Как в моем предыдущем ответе :

if ($string === str_replace(array('@word1', '@word2', '@word3'), '', $string))
{
   ...
}
...