src/AbstractQuantity.php
public static function fromString($string)
    {
        // trim white space
        $string = trim($string);

        // look for the first Uom at the end of the string
        foreach (Uom::getUoms() as $uomGroup) {
            foreach ($uomGroup as $uomName => $description) {
                $expectedPostion = strlen($string) - strlen($uomName);
                $actualPosition = strpos($string, $uomName);

                if ($expectedPostion === $actualPosition) {
                    // ok, we've found a Uom, remove it, leaving the amount
                    $amountAsString = trim(str_replace($uomName, '', $string));

                    // now see if the rest is a fraction
                    try {
                        return new static(
                            Fraction::fromString($amountAsString),
                            new Uom($uomName)
                        );
                    } catch (InvalidArgumentException $e) {
                    }

                    // no, so see if it is float
                    return new static(
                        Fraction::fromFloat($amountAsString),
                        new Uom($uomName)
                    );
                }
            }
        }

        throw new InvalidArgumentException(sprintf(
            'Cannot parse "%s" as a %s',
            $string,
            get_called_class()
        ));
    }
public static function fromString($string)
    {
        // trim white space
        $string = trim($string);

        // look for the first Uom at the end of the string
        foreach (Uom::getUoms() as $uomGroup) {
            foreach ($uomGroup as $uomName => $description) {
                $expectedPostion = strlen($string) - strlen($uomName);
                $actualPosition = strpos($string, $uomName);

                if ($expectedPostion === $actualPosition) {
                    // ok, we've found a Uom, remove it, leaving the amount
                    $amountAsString = trim(str_replace($uomName, '', $string));

                    // now see if the rest is a fraction
                    try {
                        return new static(
                            Fraction::fromString($amountAsString),
                            new Uom($uomName)
                        );
                    } catch (InvalidArgumentException $e) {
                    }

                    // no, so see if it is float
                    return new static(
                        Fraction::fromFloat($amountAsString),
                        new Uom($uomName)
                    );
                }
            }
        }

        throw new InvalidArgumentException(sprintf(
            'Cannot parse "%s" as a %s',
            $string,
            get_called_class()
        ));
    }
public static function fromString ( $ string ) { // trim white space $ string = trim ( $ string ) ; // look for the first Uom at the end of the string foreach ( Uom :: getUoms ( ) as $ uomGroup ) { foreach ( $ uomGroup as $ uomName => $ description ) { $ expectedPostion = strlen ( $ string ) - strlen ( $ uomName ) ; $ actualPosition = strpos ( $ string , $ uomName ) ; if ( $ expectedPostion === $ actualPosition ) { // ok, we've found a Uom, remove it, leaving the amount $ amountAsString = trim ( str_replace ( $ uomName , '' , $ string ) ) ; // now see if the rest is a fraction try { return new static ( Fraction :: fromString ( $ amountAsString ) , new Uom ( $ uomName ) ) ; } catch ( InvalidArgumentException $ e ) { } // no, so see if it is float return new static ( Fraction :: fromFloat ( $ amountAsString ) , new Uom ( $ uomName ) ) ; } } } throw new InvalidArgumentException ( sprintf ( 'Cannot parse "%s" as a %s' , $ string , get_called_class ( ) ) ) ; }
Create Quantity from a string, e.g.

* 1 LB
* 0.5 KG
* 1/2 OZ

@author Tom Haskins-Vaughan <tom@tomhv.uk>
@since  0.12.0

@param string $string

@return mixed
Create Quantity from a string e . g .