$str = "Наш (сайт | проект | магазин | интернет магазин | мегапупс) (предлагает | рекомендует | советует) вам (селёдочку | колбаску | водочку | грибочки | огурчики)"; echo preg_replace_callback('/\((.*?)\)/', function ($matches) { $arr = explode('|', $matches[1]); return trim($arr[array_rand($arr)]); }, $str);
$str = '{{Сьогодні|Вчора} {зранку|вночі|ввечері|після обіду|}} {я|мій {брат|друг|сусід|босс|знайомий}|{{жовто|червоно|синьо|зелено|чорно|біло|фіолетово}{бровий|вухий|ногий|рукий|волосий|}|} {молюск|краб|прибиральник|сторож|шершень|джмілль|таракан}} {побіжав|пішов|поїхав{ на автобусі| на автомобілі| на {трамваї|тролейбусі}}} в {{зоо-|комп\'ютерний|цілодобовий|продуктовий} магазин|парк|аптеку} щоб {купити|позичити|взяти в кредит|побачити} {костюм {сови|{людини павука|бетмена}|Вінні-Пуха|чебурашки|колобка}|диван|ковбасу|пилосос|вівцю|корову|автомобіль|двері|книгу П\'ятдесят відтінів сірого|із сиром пироги|пиріжки {|з капустою|з м\'ясом|з повидлом|з сиром}|хліб|масло|годинник|рибу|ковбасу|пакет|відро|москітну сітку}'; while(preg_match('#(?<!\\\)\{#', $str)) { $str = preg_replace_callback('#(?<!\\\)\{((?(?!\\\)[^\{]+?|[\s\S]+?))(?<!\\\)\}#', function($mathces) { $arr = preg_split('#(?<!\\\)\|#', $mathces[1]); return $arr[array_rand($arr)]; }, $str); } $str = str_replace(array('\{', '\}', '\|'), array('{', '}', '|'), $str); echo $str