fork(1) download
  1. <?php
  2.  
  3. $re = '~@media\b[^{]*({((?:[^{}]+|(?1))*)})~';
  4. $str = "@media only screen {\n p {\n color:red;\n }\n}\n@media only screen and (max-width: 596px) {\n p {\n color:blue;\n }\n img {\n max-width: 200px;\n }\n}\n@media only screen {\n\n}\nimg {\n display: block;\n}\n@media only screen and (max-width: 240px) {\n p {\n color:green;\n }\n}\np {\n font-weight: normal;\n}";
  5. preg_match_all($re, $str, $matches, PREG_PATTERN_ORDER);
  6. print_r($matches[0]);
  7. print_r($matches[2]);
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
Array
(
    [0] => @media only screen {
    p {
        color:red;
    }
}
    [1] => @media only screen and (max-width: 596px) {
    p {
        color:blue;
    }
    img {
        max-width: 200px;
    }
}
    [2] => @media only screen {

}
    [3] => @media only screen and (max-width: 240px) {
    p {
        color:green;
    }
}
)
Array
(
    [0] => 
    p {
        color:red;
    }

    [1] => 
    p {
        color:blue;
    }
    img {
        max-width: 200px;
    }

    [2] => 


    [3] => 
    p {
        color:green;
    }

)