воскресенье, 29 августа 2010 г.

Задачка

Вообщем необходимо чтобы слова рандомно менялись внутри фигурных скобок.
$rand_sentence = "{Please|Just} make this {cool|awesome|random} test sentence
{rotate {quickly|fast} and random|spin and be random}";

должно выглядеть как:
Please make this cool test sentence rotate fast and random.
или:
Just make this random test sentence spin and be random.

или другая случайная комбинация...
 И мой способ решения.
<?php

/**
 * @author Ruslan Korolev
 * @copyright 2010
 */

$rand_sentence = "{Please|Just} make this {cool|awesome|random} test sentence
{rotate {quickly|fast} and random|spin and be random}";
echo $rand_sentence.'</br>';
$rand1 = explode(" ", $rand_sentence);
//delete {}
$search = array('{', '}');
$rand1 = str_replace($search, '', $rand1);
/*
some debug:
echo '<pre>';
echo print_r($rand1);
echo '</pre>';
*/
for ($i = 0; $i <= count($rand1);$i++ ) {
    // if we find '|', do some magic
    if (strpbrk($rand1[$i], '|')) {
        $fstr = explode("|",$rand1[$i]);
        $rand1[$i] = $fstr[mt_rand(0,count($fstr))]; // element of array with random index
    }
}
$rand1 = implode(" ",$rand1);
echo 'Result:</br>'.$rand1;

?>

Комментариев нет:

Отправить комментарий