|
|
|
|
|
для: Axxil
(10.02.2006 в 09:15)
| | Угу. Еле вник в array_splice... спасибо. | |
|
|
|
|
|
|
|
для: Shorr Kan
(09.02.2006 в 23:43)
| | Как это не в случайных?
bebe может появится после любого слова. За это отвечает rand() | |
|
|
|
|
|
|
|
для: Shorr Kan
(09.02.2006 в 23:43)
| | Попробуйте такой вариант....
<?
$str = 'раз два три четыре';
$arr=explode(" ",$str);
$pos=rand(0,sizeof($arr));
$arr[$pos]='bebebe';
echo implode(" ",$arr);
?>
|
Он заменяет слово на bebebe в случайной позиции.
А если нужно чтоб слово втискивалось между строк, то идеальный вариант Axxil.
Если в строке
$pos=rand(0,sizeof($arr));
|
Стоит 0, то позиция может быть от первого до последнего.
Если 1, то от второго до последнего. (при данном варианте, со строкой в четыре слова - позиции могут повторяться подряд несколько раз.) | |
|
|
|
|
|
|
|
для: Shorr Kan
(09.02.2006 в 23:43)
| | А нет ли функции, которая смещает некоторые элементы? Скажем:
$arr[0];
$arr[1];
$arr[2];
$arr[3];
$arr[4];
$arr[5];
И вот их превратить в
$arr[0];
$arr[1];
$arr[3];
$arr[4];
$arr[5];
$arr[6];
...не меняя местами. | |
|
|
|
|
|
|
|
для: Axxil
(09.02.2006 в 21:13)
| | Да, JIEXA , вы правы. За наличием этой правоты - не могу пока проверить правоту Axxil - весь монитор занят...
Спасибо JIEXA , Axxil и господа, которые отвечали выше (имена запомнить не могу пока).
===============
Ага, похоже вариант Axxil не подходит по причине смены энного количества элементов, но не в случайных местах...
JIEXA, а ваш работает очень медленно ввиду того, что весь этот процесс мне надо сделать во внешнем цикле (т.е., неоднократно), плюс у него есть... ээ... минус. Он в полне может два "хи-хи, " расположить рядом.
Обидно. | |
|
|
|
|
|
|
|
для: Shorr Kan
(09.02.2006 в 20:17)
| | Вот так можно попробовать
<?
$str = 'раз, два, три, четыре.'
$arr=explode(" ",$str);
$pos=rand(1,sizeof($arr));
array_splice($arr,$pos,0,'bebebe ');
echo implode(" ",$arr);
?>
|
| |
|
|
|
|
|
|
|
для: Shorr Kan
(09.02.2006 в 20:17)
| | Хм.. вроде как мой вариант кода ничего не нарушает...
Вы точно внимательно все смотреле?
У меня мой код вывил:
Было: Раз, два, три, четыре, пять. Шесть, семь, восемь, девять, десять.
Стало: Раз, два, три, четыре, хи-хи, пять. Шесть, семь, восемь, девять, десять.
|
запускал так:
<?
$string = "Раз, два, три, четыре, пять.
Шесть, семь, восемь, девять, десять.";
$words = explode(" ", $string);
$c = rand(1, count($words)-1);
$new_string = "";
for($i=0;$i<count($words);$i++)
{
if($i==$c)
{
$new_string .= "хи-хи, ";
}
$new_string .= $words[$i]." ";
}
print "<b>Было</b>: ".$string."<br><b>Стало:</b> ".$new_string;
?>
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(09.02.2006 в 20:11)
| | Не так.
Текст:
"Раз, два, три, четыре, пять.
Шесть, семь, восемь, девять, десять."
Поменять на:
"Раз, два, три, хи-хи, четыре, пять.
Шесть, семь, хи-хи, восемь, девять, хи-хи, десять"
Недопустимо:
"Два, восемь, хи-хи, раз, четыре, семь.
Шесть, три, хи-хи, девять, хи-хи, пять, десять" | |
|
|
|
|
|
|
|
для: Shorr Kan
(09.02.2006 в 19:16)
| | что значит перемешается?
хм.. такой и должен остаться...
имеется ввиду, что текст не строка, а строки?
тогда можно перед разбиение преобразовать текст в одну строку и заменить символ \n (перенос строки) на <br> если выводить придется в html..... или же потом опять все вернуть.... | |
|
|
|
|
|
|
|
для: kasmanaft
(09.02.2006 в 18:46)
| | Да это всё да.. Я, как бы, догадался... Но я предполагал, что есть вариант, наподобие:
<?do_it(" ",$myword,$row,3);?> , где первое вхождение - символ, второе - что получим вместо него, третье - сама строка, а четвертое - номер встреченного символа. Т.е., в моем примере - будет изменен третий пробел.
Проблема вот в чём - если бить строку на массив по пробелам, то при склеивании текст весь перемешается. Совершенно. Мне же нужно...
было:
Hello, good day.
Bye-bye, tomorrow will be good day too.
Стало?
Hello, good ha-ha-ha day.
Bye-bye, tomorrow ha-ha-ha will be good day too. | |
|
|
| |
|