|
|
|
| Например есть строка: {Он} сильно {любит} {есть {фрукты} летом}
Нужно получить массив array('Он', 'любит', 'есть {фрукты} летом')
Пробовала preg_match_all(... но внутренним выражением не получается условие написать:(((
Большое спасибо! | |
|
|
|
|
|
|
|
для: jujulka
(02.03.2009 в 22:19)
| |
<?php
$s = '{Он} сильно {любит} {есть {фрукты} летом}';
$result = array();
$level = 0; // уровнь вложенности
$len = strlen($s);
for ( $i = 0, $temp = ''; $i < $len; $i++ ) {
if ( $s[$i] == '{' ) {
$level++;
if ( $level == 1 ) continue;
} elseif ( $s[$i] == '}' ) {
$level--;
if ( $level == 0 && $temp !== '' ) {
$result[] = $temp;
$temp = '';
}
}
if ( $level > 0 ) $temp .= $s[$i];
if ( $level < 0 ) $level = 0;
}
print_r($result);
|
Это всё же не регулярные выражения, но результат правильный | |
|
|
|