2013-06-05 3 views
0

Как проверить, является ли строка многословным предложением или просто одним словом?Проверьте, если многословная строка в выражении if

Я пробовал разбиваться на пробел, поэтому, если это одно слово, в массиве будет только одно слово, и если их больше, тогда все они будут в массиве.

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

Вот код:

$input = "the quick brown fox jumped over the lazy dog"; 

$sentence = explode(" ", $input); 

foreach($sentence as $item){ 
    echo $item; 
} 

выше дает мне не выход.

Итак, у меня есть 2 вопроса:

  1. Как я могу определить, если строка состоит из нескольких слов, если заявление?
  2. Почему мой код выше не разбивает предложение на массив со словами?
+0

В вашем коде нет ошибки, поэтому я не знаю ... –

+0

Код, как есть, отлично работает. Вы, должно быть, потеряли что-то в переводе от вашей реализации к вашему вопросу. –

+0

Код работает нормально – Scuzzy

ответ

4

Есть не запускать метрики между этим или раствором hek2mgl, но это должно быть быстрее:

if (stripos($input, ' ') !== false) { echo 'ZOMG I HAS WORDS'; } 

Кроме того, в качестве упоминания в комментариях, код, который вы опубликовали, работает так, как ожидалось.

+1

Более важная часть состоит в том, что легче понять намерение кода. – alex

+0

@alex: Согласовано. Вот почему я всегда скручиваюсь в положении плода, когда вижу один лайнер вроде: '$ unicorns = array_flip (array_keys (array_intersect_keys (array_flip ($ arr1), $ arr2));' –

1

Как я могу определить, если строка состоит из нескольких слов, если заявление?

if(count(explode(' ', $str)) > 0) { echo 'sentence'; } 

Почему мой код выше разделив предложение в массив со словами?

Код должен работать. Я получил (после добавления новой строки в эхо):

the 
quick 
brown 
fox 
jumped 
over 
the 
lazy 
dog 
-1

Чтобы проверить, если есть пробелы, которые можно использовать регулярные выражения, как:

$spaces = preg_match('/ /',$input); 

Это должно возвращать 1 или 0 в зависимости от того, если является пространством.

if($spaces == 1) 
    // there is more than one word 
else 
    // there is only one word with no spaces 

Ваш код выглядит без ошибок, кроме этого.

+1

Нет необходимости в регулярном выражении для поиска одного символа. – Paulpro

+0

Они попросили проверить, есть ли на входе несколько слов. Это рабочий метод для этого. – dremme

+0

Правда, поэтому я не спустил вниз. Но '$ spaces = preg_match ('/ /', $ input);' на самом деле просто медленная версия '$ spaces = strpos ($ input, '')! == false', которую я бы поставил под сомнение. – Paulpro

-1

Heres некоторые псевдокод для него:

String input = "The quick brown fox jumped over the lazy dog" 

Array[] words = String.split(input,' '); 
if(words.length > 1) 

print " more than 1 word" 

else 

print "1 word" 
0

Ваш код должен работать нормально, чтобы проверить, если есть более чем одно слово, вы должны проверить, как показано ниже

$input = "the quick brown fox jumped over the lazy dog"; 

$sentence = explode(" ", $input); 

echo "<pre>"; 
var_dump($sentence); 
echo "</pre>"; 


if(count($sentence)){ 
echo "we have more than one word!"; 
} 
1

Для справки также имеется str_word_count($string), который также будет содержать количество слов в строке.

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