Регулярное выражение

Тема в разделе "PHP", создана пользователем Tycoon, 18 июн 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Tycoon

    Tycoon Постоялец

    Регистр.:
    20 апр 2006
    Сообщения:
    77
    Симпатии:
    36
    Кто нибудь может подсказать как с помощью регулярного выражение изменить в строке
    PHP:
    $rand_sentence "{Please|Just} make this {cool|awesome|random} test sentence
    {rotate {quickly|fast} and random|spin and be random}"
    ;
    чтобы выводилось только
    Пробовал делать типо
    PHP:
    $search = array("'{'",  "'}'""'Just'""'awesome|random'","'quickly'""'spin'""'and'""'be'");
    и использовал
    , но почему то не правильно вырезаются неткорые симовлы например,
    почемуто не вырезается .. не мог бы ктонить подсказать как правильно изменить текст
     
  2. alica

    alica

    Регистр.:
    28 июл 2008
    Сообщения:
    243
    Симпатии:
    76
    PHP:
    <?php


    $word 
    "(Please|Just) make this (cool|awesome|random) test sentence (rotate (quickly|fast) and random|spin and be random)";  



    while(
    $s0 != $word preg_replace_callback('/(?: (\[)|(\() )  ([^\[\]\(\)]*)  (?(1) \]|\) )/xs'"rwords"$s0 $word));

    echo 
    $word;

    function 
    rwords($m)
    {
        
    $ar explode("|"$m[3]);
        return 
    $ar[array_rand($ar1)];
    }


    ?>
    Вот, только с другими экранами () и []
     
    Tycoon нравится это.
  3. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    PHP:
    $data "{Please|Just} make this {cool|awesome|random} test sentence {rotate {quickly|fast} and random|spin and be random}";

    $new preg_replace('!\{(.+)\|(.+)\} make this \{(.+)\|(.+)\|(.+)\} test sentence \{rotate \{(.+)\|(.+)\} and (.+)\|(.+) and be random\}!is''$1 make this $3 test sentence rotate $7  and $8'$data);
    echo 
    $new;
     
    Tycoon нравится это.
  4. Tycoon

    Tycoon Постоялец

    Регистр.:
    20 апр 2006
    Сообщения:
    77
    Симпатии:
    36
    alica :

    но почему то и ваш вариант тоже не заменяет
    и выводит
    и теряется слово random

    Добавлено через 2 минуты
    Шикарно, то что нужно!
     
  5. alica

    alica

    Регистр.:
    28 июл 2008
    Сообщения:
    243
    Симпатии:
    76
    Протестировал у себя на php 5.2.9, все вывело как положено:
    Please make this awesome test sentence rotate quickly and random
    с разными вариациями предложения... странно почему у вас не работает.:confused:
     
Статус темы:
Закрыта.