Генерация случайного слова из словаря в php - PullRequest
0 голосов
/ 24 декабря 2011

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

Это пример C#, но мой вопрос в том, как сгенерировать случайную запись из словаря в php?

Есть ли в php встроенная функция для словарей, или мне понадобится API или что-то еще для этого?

Ответы [ 3 ]

1 голос
/ 24 декабря 2011

array_rand может делать то, что вы хотите, если я правильно понимаю вопрос.

$array = array(
    'key' => 'value',
    'key2' => 'value2',
    // etc
);
$randomKey = array_rand($array); // get a random key
echo $array[$randomKey]; // get the corresponding value
0 голосов
/ 11 февраля 2018

С GitHub вы можете скачать текстовый файл, содержащий все слова из словаря в каждой строке.Полное руководство здесь - Получить случайное слово из словаря английского языка в учебнике PHP

Ниже приведен код PHP для случайного выбора строки и получения слова этой строки:

<?php
$file = "words_alpha.txt";
$file_arr = file($file);
$num_lines = count($file_arr);
$last_arr_index = $num_lines - 1;
$rand_index = rand(0, $last_arr_index);
$rand_text = $file_arr[$rand_index];
echo $rand_text;
?>

Источник: Получить случайное слово из словаря английского языка в PHP

0 голосов
/ 24 декабря 2011

Просто, чтобы завершить ответ Тома, у меня были похожие потребности в одном из моих проектов, здесь мой класс - хитрая функция, словарь непосредственно встроен в файл PHP.

/**
 * Generate bunch of english Lorem Ipsum.
 * 
 * 
 * 
 * @category Tool
 * @package Tool
 * @version 
 */
class RandomWord
{
    /**
     * List of words in the dictionnary 
     * 
     * @var array
     */
    static private $_words = array();

    /**
     * Load the dictionary. 
     * 
     * This would load the dictionnary embedded in this PHP file
     */
    static public function loadDictionnary()
    {
        $fp = fopen(__FILE__, 'r');
        $halted = false;

        while (($line = fgets($fp, 4096)) !== false) {
            if ($halted == false) {
                if (preg_match('/__halt_compiler\(\);/', $line)) {
                    $halted = true;
                }    
            } else {
                list($word, $dummy) = explode("\t", $line);
                array_push(self::$_words, $word);    
            }
        }

        fclose($fp);
    }

    /**
     * Pickup a random word from the dictionnary
     * 
     * @return string
     */
    static public function random()
    {
        if (!count(self::$_words)) {
            self::loadDictionnary();
        }
        return self::$_words[array_rand(self::$_words)];
    }

    /**
     * Generate a number of paragraph of random workds 
     * 
     * @param integer $numberOfWords
     * @param integer $paragraph
     * @return string
     */
    static public function loremIpsum($numberOfWords = 20, $paragraph = 1)
    {
        $ret = '';
        for ($i = 0; $i < $paragraph; $i++) {
            for ($v = 0; $v < $numberOfWords; $v++) {
                $ret .= self::random() . ' ';
            }
            if ($paragraph > 1) {
                $ret .= "\n";
            }
        }

        $ret = substr($ret, 0, strlen($ret) - 1);

        return $ret;
    }
}

__halt_compiler();
's gravenhage   |h
'tween  |v
'tween decks    |v
.22 |N
0   |NA
1   |NA
1-dodecanol |N
1-hitter    |N
10  |NA
100 |NA
1000    |NA
10000   |N
100000  |N
1000000 |N
1000000000  |N
1000000000000   |N
1000th  |A
100th   |A
10th    |A
11  |NA
11-plus |N
...