WordPress Version: 6.4
/**
* Converts a fraction string to a decimal.
*
* @since 2.5.0
*
* @param string $str Fraction string.
* @return int|float Returns calculated fraction or integer 0 on invalid input.
*/
function wp_exif_frac2dec($str)
{
if (!is_scalar($str) || is_bool($str)) {
return 0;
}
if (!is_string($str)) {
return $str;
// This can only be an integer or float, so this is fine.
}
// Fractions passed as a string must contain a single `/`.
if (substr_count($str, '/') !== 1) {
if (is_numeric($str)) {
return (float) $str;
}
return 0;
}
list($numerator, $denominator) = explode('/', $str);
// Both the numerator and the denominator must be numbers.
if (!is_numeric($numerator) || !is_numeric($denominator)) {
return 0;
}
// The denominator must not be zero.
if (0 == $denominator) {
// phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual -- Deliberate loose comparison.
return 0;
}
return $numerator / $denominator;
}