Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Замена случайного пробела на строку

Сообщения:  [1-10]   [11-15] 

 
 автор: Shorr Kan   (10.02.2006 в 16:02)   письмо автору
 
   для: Axxil   (10.02.2006 в 09:15)
 

Угу. Еле вник в array_splice... спасибо.

   
 
 автор: Axxil   (10.02.2006 в 09:15)   письмо автору
 
   для: Shorr Kan   (09.02.2006 в 23:43)
 

Как это не в случайных?
bebe может появится после любого слова. За это отвечает rand()

   
 
 автор: Yuri   (10.02.2006 в 03:42)   письмо автору
 
   для: 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   (10.02.2006 в 02:50)   письмо автору
 
   для: 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];

...не меняя местами.

   
 
 автор: Shorr Kan   (09.02.2006 в 23:43)   письмо автору
 
   для: Axxil   (09.02.2006 в 21:13)
 

Да, JIEXA , вы правы. За наличием этой правоты - не могу пока проверить правоту Axxil - весь монитор занят...
Спасибо JIEXA , Axxil и господа, которые отвечали выше (имена запомнить не могу пока).
===============
Ага, похоже вариант Axxil не подходит по причине смены энного количества элементов, но не в случайных местах...
JIEXA, а ваш работает очень медленно ввиду того, что весь этот процесс мне надо сделать во внешнем цикле (т.е., неоднократно), плюс у него есть... ээ... минус. Он в полне может два "хи-хи, " расположить рядом.
Обидно.

   
 
 автор: Axxil   (09.02.2006 в 21:13)   письмо автору
 
   для: 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);
?>

   
 
 автор: JIEXA   (09.02.2006 в 21:05)   письмо автору
 
   для: Shorr Kan   (09.02.2006 в 20:17)
 

Хм.. вроде как мой вариант кода ничего не нарушает...
Вы точно внимательно все смотреле?
У меня мой код вывил:

Было: Раз, два, три, четыре, пять. Шесть, семь, восемь, девять, десять.
Стало: Раз, два, три, четыре, хи-хи, пять. Шесть, семь, восемь, девять, десять.


запускал так:


<? 
$string 
"Раз, два, три, четыре, пять.
Шесть, семь, восемь, девять, десять."

$words explode(" "$string); 
$c rand(1count($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
?>

   
 
 автор: Shorr Kan   (09.02.2006 в 20:17)   письмо автору
 
   для: kasmanaft   (09.02.2006 в 20:11)
 

Не так.

Текст:
"Раз, два, три, четыре, пять.
Шесть, семь, восемь, девять, десять."

Поменять на:
"Раз, два, три, хи-хи, четыре, пять.
Шесть, семь, хи-хи, восемь, девять, хи-хи, десять"

Недопустимо:
"Два, восемь, хи-хи, раз, четыре, семь.
Шесть, три, хи-хи, девять, хи-хи, пять, десять"

   
 
 автор: kasmanaft   (09.02.2006 в 20:11)   письмо автору
 
   для: Shorr Kan   (09.02.2006 в 19:16)
 

что значит перемешается?
хм.. такой и должен остаться...

имеется ввиду, что текст не строка, а строки?
тогда можно перед разбиение преобразовать текст в одну строку и заменить символ \n (перенос строки) на <br> если выводить придется в html..... или же потом опять все вернуть....

   
 
 автор: Shorr Kan   (09.02.2006 в 19:16)   письмо автору
 
   для: 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.

   

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования