Скрипт перестановки слов в тексте.

taranss
На сайте с 22.01.2008
Offline
71
842

Всем доброго времени суток. Прошу вас помочь мне. Столкнулся вот с такой задачей:

Есть текст:

Сегодня ищу скрипт замены текста.

Далее делаем вот так:

[Сегодня|Сейчас|Нынче] ищу скрипт [замены|подмены|перемены] текста.

Задача сгенерировать НЕ всевозможные варианты:

1-1

1-2

1-3

2-1

2-2

2-3

3-1

3-2

3-3

А сгенерировать только три варианта последовательно:

1-1

2-2

3-3

В итоге получится 3 варианта:

Сегодня ищу скрипт замены текста. (оригинал)

Сейчас ищу скрипт подмены текста.

Нынче ищу скрипт перемены текста.

Помогите пожалуйста.

TytCoin.com (https://tytcoin.com) - Круглосуточный обмен, ввод, вывод электронных валют.
[umka]
На сайте с 25.05.2008
Offline
456
#1

Эээмм... а в чём, собственно, проблема?

Сделать цикл от 1 до N или сделать замену? :)

Лог в помощь!
frantic
На сайте с 09.02.2009
Offline
27
#2

<?php


function vs($str)
{

preg_match_all('|\[([^\]]+)\]|sU', $str, $patterns);

foreach ( $patterns[1] as $ks => $patt ) {
$pr[] = preg_split("/\|/", $patt);
$rx[] = '|\[[^\[]+\]' . str_repeat('([^\[]*\[[^\]]+\])', sizeof($patterns[1]) - 1 - $z++) . '|Us';
}

foreach ( $pr[0] as $k => $s ) {

$pnt = array();

foreach ( $pr as $ks => $st ) {

$t = 1;
$pp = '';

foreach ( $pr as $kss => $stt ) {
$pp .= ( $kss >= $ks ? ( $kss == $ks ? $stt[$k] : '${' . $t++ . '}' ) : '' );
}

$pnt[] = $pp;

}

$vs[] = preg_replace($rx, $pnt, $str);

}

return $vs;

}

$str = '[Сегодня|Сейчас|Нынче] ищу скрипт [замены|подмены|перемены] текста.';

print_r(vs($str));

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