(первый постер, давний посетитель через Google)
Я пытаюсь извлечь содержимое некоторых квадратных скобок, но у меня есть некоторые проблемы. У меня это работает для круглых скобок, как показано ниже, но я не вижу, как это должно быть изменено, чтобы работать для квадратных скобок. Я бы подумал, что замена раунда на квадрат и наоборот в этом примере должна сработать, но, видимо, нет.
Необходимо игнорировать скобки в скобках. Таким образом, он не вернет (11), но вернет (10 (11) 12).
<code>$preg = '#\(((?>[^()]+)|(?R))*\)#x';
$str = '123(456)(789)(10(11)12)';
if(preg_match_all($preg, $str, $matches)) {
$matches = $matches[0];
} else {
$matches = array();
}
echo '<pre>'.print_r($matches,true).'
';
Это возвращает:
Array (
[0] => (456)
[1] => (789)
[2] => (10 (11) 12)
)
Что идеально. Тем не менее, как я могу заставить это работать для строки в квадратных скобках вместо, например:
$str = '123[456][789][10[11]12]';