You are here

function csstidy_optimise::AnalyseCssNumber in Advanced CSS/JS Aggregation 7

Same name and namespace in other branches
  1. 6 advagg_css_compress/csstidy/class.csstidy_optimise.inc \csstidy_optimise::AnalyseCssNumber()

Checks if a given string is a CSS valid number. If it is, an array containing the value and unit is returned

Parameters

string $string:

Return value

array ('unit' if unit is found or '' if no unit exists, number value) or false if no number

1 call to csstidy_optimise::AnalyseCssNumber()
csstidy_optimise::compress_numbers in advagg_css_compress/csstidy/class.csstidy_optimise.inc
Compresses numbers (ie. 1.0 becomes 1 or 1.100 becomes 1.1 )

File

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

Class

csstidy_optimise
CSS Optimising Class

Code

function AnalyseCssNumber($string) {

  // most simple checks first
  if (strlen($string) == 0 || ctype_alpha($string[0])) {
    return false;
  }
  $units =& $GLOBALS['csstidy']['units'];
  $return = array(
    0,
    '',
  );
  $return[0] = floatval($string);
  if (abs($return[0]) > 0 && abs($return[0]) < 1) {
    if ($return[0] < 0) {
      $return[0] = '-' . ltrim(substr($return[0], 1), '0');
    }
    else {
      $return[0] = ltrim($return[0], '0');
    }
  }

  // Look for unit and split from value if exists
  foreach ($units as $unit) {
    $expectUnitAt = strlen($string) - strlen($unit);
    if (!($unitInString = stristr($string, $unit))) {

      // mb_strpos() fails with "false"
      continue;
    }
    $actualPosition = strpos($string, $unitInString);
    if ($expectUnitAt === $actualPosition) {
      $return[1] = $unit;
      $string = substr($string, 0, -strlen($unit));
      break;
    }
  }
  if (!is_numeric($string)) {
    return false;
  }
  return $return;
}