(первый постер, давний посетитель через Google)
Я пытаюсь извлечь содержимое некоторых квадратных скобок, однако у меня есть проблемы. У меня это работает для круглых скобок, как показано ниже, но я не вижу, как его следует изменить для работы с квадратными скобками. Я бы подумал, что замена круглого на квадратное и наоборот в этом примере должна работать, но, видимо, нет.
Он должен игнорировать скобки внутри скобок. Таким образом, он не вернет (11), а вернет (10 (11) 12).
$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).'</pre>';
This returns:
Array (
[0] => (456)
[1] => (789)
[2] => (10(11)12)
)
Что идеально. Однако как я могу заставить это работать для строки с квадратными скобками, например:
$str = '123[456][789][10[11]12]';