Convertir un texo SI/NO, YES/NO, Y/S, S/N, 1/0 a Bool

Código PHP

PHP – Conversiones – Bool

Función que convierte un valor SI/NO, YES/NO, Y/S, S/N, 1/0 a Bool.

Si el valor esta vació o no se puede convertir devuelve null.

/**
 * Class HelperArray
 */
abstract class HelperConvert
{
    /**
     * Transforma un string SI/NO-YES/NO-Y/S-S/N-1/0 a bool.
     * Si el valor está vacío o null, devuelve null.
     * Devuelve null si no se puede convertir a true o false.
     *
     * @param string $str_bool
     *
     * @return bool
     * @see validIsEmpty()
     * @since 20/09/2020
     */
    public static function toBool($str_bool)
    {
        $ret = -1;
        if (HelperValidate::isEmpty($str_bool)) {

            $ret = null;

        } else {

            if (is_string($str_bool)) {

                $name = strtolower(strtr($str_bool, 'ÍÓíó', 'ioio'));

                $sn   = preg_replace('/^[:alnum:]/ui', '', 
                                      strtoupper(trim($name)));

                if ( $sn == 'S' || 
                     $sn == 'Y' || 
                     $sn == 'SI' || 
                     $sn == 'YES' || 
                     $sn == '1') {

                    $ret = true;

                } else {

                    if ($sn == 'N' || $sn == 'NO' || $sn == '0') {
                        $ret = false;
                    } else {
                        $ret = null;
                    }
                }
            } else {
  
                if (is_numeric($str_bool)) {

                    if ($str_bool === 1) {

                        $ret = true;

                    } else {

                        if ($str_bool === 0) {
                            $ret = false;
                        } else {
                            $ret = null;
                        }
                    }
                } else {

                    if (is_bool($str_bool)) {
                        return $str_bool;
                    }
                }
            }
        }
        return $ret;
    }
}

Funciones utilizadas