2014-08-30 6 views
2

У меня есть предложение, которое я хотел бы, чтобы скрыть слово случайным образом, например:Скрыть слово случайным образом из предложения

<?php 
$sentence = 'My name is Abu Rayane'; 
?> 

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

My name is Abu <input type="text" name="fillBlank"> <br /> 
<input type="submit" name="check" value="check"> 
+1

'$ removed_word = $ слов [array_rand ($ слова)]; $ words [array_rand ($ words)] = '___'; ' –

+0

это возвращает« M » –

+0

Не знаете, как вы его запускаете. Это работает для меня: https://eval.in/185799 –

ответ

3
$sentence = 'My name is Abu Rayane'; 
$sentence = explode(' ', $sentence); 
$position = rand(0, count($sentence) - 1); 
$answer = $sentence[$position]; 
$sentence[$position] = '<input type="text" name="fillBlank">'; 
echo implode(" ", $sentence); 

Пример: https://eval.in/185829

Edit: заставить его работать, если длина слова в неизвестном

+0

Ударьте меня на это. Хороший ответ. – DanDotNet

+0

@DanDoNet Спасибо. 'rand()' было первым, о чем я мог подумать. –

+0

если количество слов неизвестно !!! –

1

вы могли бы использовать что-то вроде этого

$word = explode(' ', $sentence); 
$word = $word[rand(0, count($sentence) - 1)]; 

explode функция действительно полезна, если вы хотите разбить строку. Существует также функцию implode, которая делает прямо противоположное

0

Я попробовал это, я получил ответ от ваших diffenrent кодов:

<?php 
$sentence = 'My name is Abu Rayane'; 
$countSentence = str_word_count($sentence); 

echo 'Total words '.$countSentence.'<br />'; 

// get random number from 0 to 4 
$rand = rand(0, $countSentence - 1); 

// explode sentence 
$ex = explode(' ',$sentence); 

// get the equivalent word for a rand number 
$hide = $ex[$rand]; 

$z = implode(' ', $ex).'<br />'; 
echo str_replace($hide, '______', $z); 
?> 

Испытано: https://eval.in/185847