Explodes a string as explode() does, however, not if $sep is escaped or within a string.

@version 1.0

Parameters

string $sep seperator:

string $string:

Return value

array

3 calls to csstidy_optimise::explode_ws()
csstidy_optimise::dissolve_short_bg in advagg_css_compress/csstidy/class.csstidy_optimise.inc
Dissolve background property
csstidy_optimise::dissolve_short_font in advagg_css_compress/csstidy/class.csstidy_optimise.inc
Dissolve font property
csstidy_optimise::merge_bg in advagg_css_compress/csstidy/class.csstidy_optimise.inc
Merges all background properties

File

advagg_css_compress/csstidy/class.csstidy_optimise.inc, line 580

Class

csstidy_optimise
CSS Optimising Class

Code

function explode_ws($sep, $string) {
    $status = 'st';
    $to = '';
    $output = array();
    $num = 0;
    for ($i = 0, $len = strlen($string); $i < $len; $i++) {
        switch ($status) {
            case 'st':
                if ($string[$i] == $sep && !csstidy::escaped($string, $i)) {
                    ++$num;
                }
                elseif ($string[$i] === '"' || $string[$i] === '\'' || $string[$i] === '(' && !csstidy::escaped($string, $i)) {
                    $status = 'str';
                    $to = $string[$i] === '(' ? ')' : $string[$i];
                    isset($output[$num]) ? $output[$num] .= $string[$i] : ($output[$num] = $string[$i]);
                }
                else {
                    isset($output[$num]) ? $output[$num] .= $string[$i] : ($output[$num] = $string[$i]);
                }
                break;
            case 'str':
                if ($string[$i] == $to && !csstidy::escaped($string, $i)) {
                    $status = 'st';
                }
                isset($output[$num]) ? $output[$num] .= $string[$i] : ($output[$num] = $string[$i]);
                break;
        }
    }
    if (isset($output[0])) {
        return $output;
    }
    else {
        return array(
            $output,
        );
    }
}