assert(isCorrect('') === true);
assert(isCorrect('()') === true); 
assert(isCorrect('{()}') === true);
assert(isCorrect('{()}{}') === true); 
assert(isCorrect('(())') === true);
assert(isCorrect('{({({({()})})})}') === true); 
assert(isCorrect('{(})') === false);
this i have result for preg_match:
function isCorrect($source){
    return (bool)preg_match('~^((\(([^)(}{]|(?1))*\))|\{(?3)*\})*$~', $source);
}
Now I have the same thing only through preg_replace();
 
     
    