Existe uma maneira fácil no PHP para converter de seqüências de caracteres como '256M', '180K', '4G' para seus equivalentes inteiros?

Eu preciso testar o valor retornado porini_get('memory_limit') e aumentar o limite de memória se estiver abaixo de um determinado limite,ini_get('memory_limit') call retorna valores de string como '128M' ao invés de inteiros.

Eu sei que posso escrever uma função para analisar essas cadeias de caracteres (considerando maiúsculas e minúsculas 'B's) como as escrevi várias vezes:

function int_from_bytestring ($byteString) {
  preg_match('/^\s*([0-9.]+)\s*([KMGTPE])B?\s*$/i', $byteString, $matches);
  $num = (float)$matches[1];
  switch (strtoupper($matches[2])) {
    case 'E':
      $num = $num * 1024;
    case 'P':
      $num = $num * 1024;
    case 'T':
      $num = $num * 1024;
    case 'G':
      $num = $num * 1024;
    case 'M':
      $num = $num * 1024;
    case 'K':
      $num = $num * 1024;
  }

  return intval($num);
}

No entanto, isso fica tedioso e isso parece uma daquelas coisas aleatórias que já existiriam no PHP, embora eu nunca tenha encontrado. Alguém sabe de alguma maneira interna para analisar essas seqüências de quantidade de bytes?

questionAnswers(5)

yourAnswerToTheQuestion