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

Форум Регулярные Выражения

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Как обработать текст типа "слово0 {слово1|слово2} слово3 слово4"
 
 автор: kukuikar   (25.10.2008 в 09:28)   письмо автору
 
 

т.е. чтобы результатом работы функции было 2 варианта шаблонного текста (или более, в зависимости от числа вариантов в скобках {}).
не могу сообразить...
заранее спасибо.

  Ответить  
 
 автор: Valick   (25.10.2008 в 09:40)   письмо автору
 
   для: kukuikar   (25.10.2008 в 09:28)
 

Лично я не то что сообразить как... понять даже не могу, что вам надо получить в конечном итоге.

  Ответить  
 
 автор: kukuikar   (25.10.2008 в 10:03)   письмо автору
 
   для: Valick   (25.10.2008 в 09:40)
 

на примере:
"Хопер-инвест {отличная|хорошая|прекрасная} компания. Она занимается {обманом|оболваниванием} {людей|народа}"

после обработки имеем 12 вариантов этого текста:

1 Хопер-инвест отличная компания. Она занимается обманом людей
2 Хопер-инвест отличная компания. Она занимается обманом народа
3 Хопер-инвест отличная компания. Она занимается оболваниванием людей
4 Хопер-инвест отличная компания. Она занимается оболваниванием народа
5 Хопер-инвест хорошая компания. Она занимается обманом людей
6 Хопер-инвест хорошая компания. Она занимается обманом народа
7 Хопер-инвест хорошая компания. Она занимается оболваниванием людей
8 Хопер-инвест хорошая компания. Она занимается оболваниванием народа
9 Хопер-инвест прекрасная компания. Она занимается обманом людей
10 Хопер-инвест прекрасная компания. Она занимается обманом народа
11 Хопер-инвест прекрасная компания. Она занимается оболваниванием людей
12 Хопер-инвест прекрасная компания. Она занимается оболваниванием народа

Т.е. из {12|34|56|78} случайно выбирается одно из значений.....

  Ответить  
 
 автор: Valick   (25.10.2008 в 10:25)   письмо автору
 
   для: kukuikar   (25.10.2008 в 10:03)
 

Так понятно, даже есть кое какие соображения по поводу применения этого всего.

А чем обусловлена именно такая "Хопер-инвест {отличная|хорошая|прекрасная} компания. Она занимается {обманом|оболваниванием} {людей|народа}" конструкция?

Не проще ли "Хопер-инвест $good компания. Она занимается $obman $people"

  Ответить  
 
 автор: kukuikar   (25.10.2008 в 10:36)   письмо автору
 
   для: Valick   (25.10.2008 в 10:25)
 

есть уже готовый текст с такими конструкциями. около 2000 символов. :)

  Ответить  
 
 автор: kukuikar   (25.10.2008 в 10:36)   письмо автору
 
   для: Valick   (25.10.2008 в 10:25)
 

хотя для новых таких текстов надо будет попробовать именно так.

  Ответить  
 
 автор: Valick   (25.10.2008 в 10:47)   письмо автору
 
   для: kukuikar   (25.10.2008 в 10:36)
 

Ну да, для готового текста (который можно набрать в любом редакторе) выбора нет, а вообще можно веб интерфейс сделать (облегчить жизнь спамерам) с готовыми пресетами.

  Ответить  
 
 автор: kukuikar   (25.10.2008 в 11:51)   письмо автору
 
   для: Valick   (25.10.2008 в 10:47)
 

вообще-то мне не для спама. а для рерайта. для раскрутки-продвижения сайтов

  Ответить  
 
 автор: kukuikar   (25.10.2008 в 21:33)   письмо автору
 
   для: kukuikar   (25.10.2008 в 09:28)
 

никто идейку не подкинет?

  Ответить  
 
 автор: Trianon   (25.10.2008 в 22:00)   письмо автору
 
   для: kukuikar   (25.10.2008 в 21:33)
 

Вы не написали, хотите сгенерировать полный набор всех возможных вариантов или 1 случайный вариант из этого набора.

Идейка от этого от этого.
В первом случае строим цикл разбора или пишем рекурсивную функцию генерации.
Во втором обходимся регулярными выражениями.
Дерзайте.

  Ответить  
 
 автор: Axxil   (25.10.2008 в 22:01)   письмо автору
 
   для: kukuikar   (25.10.2008 в 21:33)
 

Идея такая:

<?
  
function make($text){
    
preg_match_all('|\{([^\}]+)\}|is',$text,$out);
    foreach(
$out[1] as $k=>$item){
      
$a explode('|',$item);
      
$r rand(0,count($a));
      
$text str_replace($out[0][$k],$a[$r],$text);
    }
    return 
$text;
  }
?>

  Ответить  
 
 автор: kukuikar   (26.10.2008 в 20:32)   письмо автору
 
   для: Axxil   (25.10.2008 в 22:01)
 

спасибо.
слегка модифицирую и порядок.
еще раз спасибо.

  Ответить  
 
 автор: BinLaden   (26.10.2008 в 20:36)   письмо автору
 
   для: Axxil   (25.10.2008 в 22:01)
 

> $r = rand(0,count($a));

?

> \{ <...> \}

?

> |is

?

  Ответить  
 
 автор: Axxil   (26.10.2008 в 23:15)   письмо автору
 
   для: BinLaden   (26.10.2008 в 20:36)
 

Слушай, террорист.
Я не на оценку это писал. И уж тем более не для твоих вопросов. Если нашёл ошибку, то возьми да исправь. Нафиг из себя гуру корчить?
И вообще, докапывайся до кого-нибудь другого. Просил же.
Задолбал уже, честное слово.

  Ответить  
 
 автор: BinLaden   (26.10.2008 в 23:21)   письмо автору
 
   для: Axxil   (26.10.2008 в 23:15)
 

> $r = rand(0,count($a));

Массив размером N имеет индексы 0 .. N - 1, а не 0 .. N

> \{ <...> \}

Бекслеши лишние

> |is

Они тут не нужны.

P.S. Это не про Вас поют "... Ты не такой, как все ..."?

  Ответить  
Rambler's Top100
вверх

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