panika
Новичок
Все сделал, правда потратил на это много нервов.
если есть несуразности в коде которые можно обойти более простым и быстрым способом - я буду рад выслушать их.
PHP:
$source = "[level>6]2[level<2]Вы авторизованы[/level]232134[/level]";
$level = 8;
function level_blocks($source, $more=''){
$regexp = "#\\[level([^\]\[]*?)\\]((?:[^[]|(?R))+)\\[/level\\]#";
if(is_array($source)){
$more = $source[1];
$source = $source[2];
preg_match("/<([0-9]+)/i", $more, $under);
$AOpenForU = isset( $under[1] )? intval( $under[1] ) : false;
preg_match("/>([0-9]+)/i", $more, $larger);
$AOpenForL = isset( $larger[1] )? intval( $larger[1] ) : false;
if( ( !$AOpenForL || $AOpenForL > $level ) && ( !$AOpenForU || $AOpenForU < $level ) ){
preg_match($regexp, $source, $output);
if( count( $output ) > 0 ) return preg_replace_callback( $regexp, "level_blocks", $source );
return $source;
}else return '';
return false;
}else{
return preg_replace_callback( $regexp, "level_blocks", $source );
}
}
$source = level_blocks( $source );
print $source;
Код:
2232134