<?php
error_reporting(-1);

$words = [
    'word1' => array('Чудесных', 'Суровых', 'Занятных', 'Внезапных'),
    'word2' => array('слов', 'зим', 'глаз', 'дней', 'лет', 'мир', 'взор'),
    'word3' => array('прикосновений', 'поползновений', 'судьбы явлений',
        'сухие листья', 'морщины смерти', 'долины края', 'замены нету',
        'сухая юность', 'навек исчезнув'),
    'word4' => array('обретаю', 'понимаю', 'начертаю', 'закрываю', 'оставляю',
        'вынимаю', 'умираю', 'замерзаю', 'выделяю'),
    'word5' => array('очертания', 'безысходность', 'начертанья', 'смысл жизни',
        'вирус смерти', 'радость мира'),
];

$pattern = 'word1 word2 word3 br word1 word2 word3 br Я word4 word5';

foreach (explode(' ', $pattern) as $value) {
    if (in_array($value, array_keys($words))) {
        $result = $words[$value][array_rand($words[$value])] . ' ';
    } elseif ("br" === $value) {
        $result = "\n";
    } else {
        $result = $value . ' ';
    }

    echo $result;
}