заменить случайные слова в строке

Я хочу создать функцию, заменяющую случайные слова в строке. Вот что я подумал.

  1. Учитывая строку, я бы дал случайную позицию индекса в этой строке.
  2. Из этого индекса я заменю ближайшее слово на слово, которое хочу
  3. Наряду с этим я бы сохранил слово, которое просто заменяю, в какую-то переменную / базу данных / файл хранилища

Ex.

Случайное семя слова: дерево, кошка, волк, яблоко

Строка: Быстрая коричневая лисица перепрыгивает через ленивую собаку.

Возможные результаты:

  1. Яблочно-коричневая лисица прыгает в кошку, ленивая собака.
  2. Быстрое коричневое волчье дерево над ленивой собакой.
  3. Быстрая лисица над ленивым яблоком.

person Aivan Monceller    schedule 04.05.2012    source источник
comment
получить длину строки - ›получить случайное целое число в этом диапазоне -› получить символ по этому индексу, если индекс инкремента пробела будет увеличиваться до тех пор, пока вы не найдете слово. - лучше всего было бы использовать регулярные выражения, я думаю   -  person Antwan van Houdt    schedule 04.05.2012


Ответы (2)


Самый четкий код будет у

  1. Разделение строки на слова массива (например, с explode или preg_split для более сложной логики)
  2. Замена случайно выбранных записей в массиве по своему усмотрению
  3. Объединение слов обратно в строку с помощью (например, implode)
person Jon    schedule 04.05.2012

Просто explode строку в пробелах и используйте rand() для замены. Нравится:

<?php
$string = "The quick brown fox jumps over the lazy dog.";
$aWords = explode($string, " ");
foreach ($aWords as $word)
{
    if(rand(1,2) == 1)
    {
        //replace the word
    }
}
// implode the string
?>
person Devator    schedule 04.05.2012
comment
Вы использовали неправильный синтаксис $aWords = explode($string, " "); Правильный: $aWords = explode(" ",$string); - person Salman Mohammad; 15.04.2017