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

Статус
В этой теме нельзя размещать новые ответы.

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}";
чтобы выводилось только
Please make this cool test sentence rotate fast and random
Пробовал делать типо
PHP:
$search = array("'{'",  "'}'", "'Just'", "'awesome|random'","'quickly'", "'spin'", "'and'", "'be'");

и использовал
, но почему то не правильно вырезаются неткорые симовлы например,
почемуто не вырезается .. не мог бы ктонить подсказать как правильно изменить текст
 
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($ar, 1)];
}


?>
Вот, только с другими экранами () и []
 
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;
 
Для просмотра ссылки Войди или Зарегистрируйся :

но почему то и ваш вариант тоже не заменяет
и выводит
Please| make this cool|| test sentence rotate |fast |
и теряется слово random

Добавлено через 2 минуты
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;

Шикарно, то что нужно!
 
Для просмотра ссылки Войди или Зарегистрируйся :
но почему то и ваш вариант тоже не заменяет и выводит и теряется слово random
Протестировал у себя на php 5.2.9, все вывело как положено:
Please make this awesome test sentence rotate quickly and random
с разными вариациями предложения... странно почему у вас не работает.:confused:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху