Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [php] размножение текста (https://forum.antichat.xyz/showthread.php?t=125494)

FreShBY 16.06.2009 11:17

[php] размножение текста
 
Добрый день.

Хочу написать размножение текста. Но что-то не получается.

Есть строка: [Привет/Здравствуй], [Артём/Миша/Саша/Паша/Даша/Петя/И другие]

На выводе должно быть:
Привет, Артём
Привет, Миша
Привет, Саша
Привет, Паша
Привет, Даша
Привет, Петя
Привет, И другие
Здравствуй, Артём
Здравствуй, Миша
Здравствуй, Саша
Здравствуй, Паша
Здравствуй, Даша
Здравствуй, Петя
Здравствуй, И другие

Для этого написал скрипт:
Код:

$formyla = "[Привет/Здравствуй], [Артём/Миша/Саша/Паша/Даша/Петя/И другие]";
preg_match_all('/\[(.*?)\]/i', $formyla, $out);
foreach($out[1] as $key => $value)
{
        $words = explode('/', $value);
       
        foreach($words as $key2 => $value2)
        {
                echo str_replace("[".$value."]", $value2, $formyla)."<br>";
        }
}

Но тут появилась проблема. Оно выводит:
Привет, [Артём/Миша/Саша/Паша/Даша/Петя/И другие]
Здравствуй, [Артём/Миша/Саша/Паша/Даша/Петя/И другие]
[Привет/Здравствуй], Артём
[Привет/Здравствуй], Миша
[Привет/Здравствуй], Саша
[Привет/Здравствуй], Паша
[Привет/Здравствуй], Даша
[Привет/Здравствуй], Петя
[Привет/Здравствуй], И другие

Попробовал строчку: Привет, [Артём/Миша/Саша/Паша/Даша/Петя/И другие]

Выводит: Привет, Артём
Привет, Миша
Привет, Саша
Привет, Паша
Привет, Даша
Привет, Петя
Привет, И другие

Не работает размножение если в этой строчке есть 2 разных [].

Может кто знает решение?

FireFenix 16.06.2009 11:40

PHP код:

<?php

$string 
'[Привет/Здравствуй], [Артём/Миша/Саша/Паша/Даша/Петя/И другие]';
preg_match_all('/\[(.*?)\]/i'$string$match);

$action explode('/'$match[1][0]);
$names explode('/'$match[1][1]);

for(
$j 0$j count($action); $j++)
{
  for(
$k 0$k count($names); $k++)
  {
    echo(
$action[$j] . ', ' $names[$k] . '<br>');
  }
}

?>


mailbrush 16.06.2009 11:56

FireFenix, омг. FreShBY, юзай:
PHP код:

<?
$words
=array('Привет','Здраствуй');
$names=array('Артём','Миша','Саша','Паша','Даша','Петя','И другие');
foreach(
$words as $word)
    foreach(
$names as $name)
        echo 
$word.', '.$name."<br>\r\n";
?>


wildshaman 16.06.2009 11:57

mailbrush, Посмотри, в каком виде исходная строка.

mailbrush 16.06.2009 12:08

Если учитывать исходную строку, тогда так:
PHP код:

<?php
$string
='[Привет/Здравствуй], [Артём/Миша/Саша/Паша/Даша/Петя/Другие]';
preg_match_all('#\[(.*?)\]#',$string,$match);
$words=explode('/',$match[1][0]);
$names=explode('/',$match[1][1]);
foreach(
$words as $word)
    foreach(
$names as $name)
        echo 
$word.', '.$name."<br>\r\n";
?>

FireFenix, так и не юзаешь форич.

FreShBY 16.06.2009 12:09

А если [] Таких скобок будет в тексте неизвестное количество? Т.е. текст будет вводить каждый раз разные и разными людьми?

mailbrush 16.06.2009 12:20

Нет, в этом случае только две скобки. Но можно сделать анлим.

Trieg 16.06.2009 12:29

похоже ТС хочет сделать рандомизатор текста.. ели так то вот готовый http://xbb.uz/randomizator/

FreShBY 16.06.2009 13:01

Мне нужен свой. Мне в движой свой и для своих целей.

FreShBY 16.06.2009 14:31

Нужно каким то рекурсивным выводом делать ... а как ... не знаю


Время: 12:09