@Leopandro
Разработчик CRM/ERP систем

Как разделить строку по скобкам, внутри которых еще есть скобки?

Допустим текст
(Lorem ipsum) dolor sit amet, (consectetur adipiscing elit, (sed do eiusmod))
Разделить на:
(Lorem ipsum)
 dolor sit amet, 
(consectetur adipiscing elit, (sed do eiusmod))


Пробовал так:
\((.+)\)
preg_split("/\((.*?)\)/", $this->text, -1, PREG_SPLIT_DELIM_CAPTURE);

Но он работает некорректно
  • Вопрос задан
  • 1096 просмотров
Решения вопроса 1
@Leopandro Автор вопроса
Разработчик CRM/ERP систем
Короче говоря, решение задачи посложнее этой. Очень интересное:
$rand_sentence = "{Please|Just} make this {cool|awesome|random} test sentence {rotate {quickly|fast} and random|spin and be random}";

$regexp = '#\{((?>[^{}]+)*)\}#';

while(strpos($rand_sentence, '{') !== false)
   $rand_sentence = preg_replace_callback($regexp, 'replace_match_str', $rand_sentence);

echo $rand_sentence . "\n";


function replace_match_str($str)
{
   $result = explode("|", $str[1]); // split string by "|" symbol
   $replacement = array_rand($result); // random array ellement

   return $result[$replacement];
}


Этот вопрос задавал чтобы решить часть этой задачи.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Daniro_San
@Daniro_San
Программист
Задайте переменную - счетчик открытых скобок. Пройдитесь циклом по строке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы