Gibt es in PHP eine einfache Möglichkeit, Zeichenfolgen wie '256M', '180K', '4G' in ihre ganzzahligen Entsprechungen zu konvertieren?

Ich muss den von zurückgegebenen Wert testenini_get('memory_limit') und erhöhen Sie das Speicherlimit, wenn es unter einem bestimmten Schwellenwert liegt, dies jedochini_get('memory_limit') call liefert String-Werte wie '128M' anstatt Ganzzahlen.

Ich weiß, dass ich eine Funktion schreiben kann, um diese Zeichenfolgen zu analysieren (unter Berücksichtigung von Groß- und Kleinschreibung und abschließenden 'B'), da ich sie mehrfach geschrieben habe:

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);
}

Dies wird jedoch mühsam und scheint eines dieser zufälligen Dinge zu sein, die bereits in PHP existieren würden, obwohl ich es nie gefunden habe. Kennt jemand eine integrierte Methode zum Parsen dieser Byte-Mengen-Zeichenfolgen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage