Не могу сообразить как сделать замену в HTML коде страницы.
Есть массив со словами (массивов будет около 1к, в каждом 3-50 элементов)
['rain ', 'rainfall', 'storm']
Нужно чтобы в тексте вхождение каждого из этих слов заменялось на любое другое из массива, в тексте любое из слов массива может встречаться 0-N раз. При это чтобы слово rain не все N вхождений заменилось на
storm
, а в случайном порядке с
rainfall
, и другими вариантами (если есть).
Вариант 1:
str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) : mixed
$search = подать массив с синонимами
$replace = подать какую-то конструкцию которую потом отдельной функцией обработать, например конструкция вида
"spintax" {rain|clown|snow}
.
Вариант 2:
Создать некий индекс / многомерный массив каждого слова имеющегося, например имею 50 массивов с вариантами замен, нашлось определенное слово из массива 20 имеющее индекс 2 , в тексте заменить его на $WORD_20_2 , далее отдельной функцией искать регуляркой $word_20_2 и менять на элементы массива 20 и слова с НЕ индексом 2.
Оба решения мне кажутся недостаточно элегантными, наверняка есть более интересные варианты и простые. Думал еще через preg_match_all с индексом на offset сделать, но не получается ибо длина слов всегда разная.