За последние 24 часа нас посетили 16922 программиста и 2175 роботов. Сейчас ищут 879 программистов ...

помогите разобрать шаблон (while)

Тема в разделе "PHP для новичков", создана пользователем gkhelloworld, 28 июл 2010.

  1. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    есть такой шаблон, ни как не могу его разобрать.. :(

    {{привет|hello} {{мир|друг}|world}}

    должно получится:
    Код (Text):
    1. привет мир
    2. hello мир
    3. привет друг
    4. hello друг
    5. привет world
    6. hello world
     
  2. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    не понял вопроса
     
  3. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    да тут в принципе нечего понимать, обычный генератор фраз
     
  4. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    сео штучки) опять какой то чудо сео софт затевает тс :D
     
  5. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    да никакого софта... всё банально просто - сижу целый день разобрать не могу... с древовидными комментариями разобрался теперь с этим, вроде бы ничего сложного... но мозг не хочет - думать, вот тут может кто-то подскажет..пример ..ну только не TextRandomizer
     
  6. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    немного поменял синтаксис.
    PHP:
    1.  
    2. <?php
    3. $text="
    4. {{привет|hello} {{мир|друг} {world}}}
    5.  
    6. {siski|piski}
    7. ";
    8. function Parse($text){
    9.     $res=array();
    10.     preg_match_all("#{((?:[^{}]+|(?R))*)}#is",$text,$pr);
    11.     for($i=0,$c=count($pr[0]);$i<$c;$i++){
    12.         $ppr=Parse($pr[1][$i]);
    13.         if(!empty($ppr)){
    14.             $res[$pr[0][$i]]=$ppr;
    15.         }else{
    16.             $res[$pr[0][$i]]=explode("|",$pr[1][$i]);
    17.         }
    18.     }
    19.     return $res;
    20. }
    21. print_r(Parse($text));