src/HtmlElement.php
public static function htmlAttribute(array $attributes = []) : string
    {
        $return = '';
        foreach ($attributes as $attribute => $value) {
            $json = false;
            if ($attribute == 'data-options') {
                if (is_array($value) || is_object($value)) {
                    $value = json_encode($value);
                    $json = true;
                } elseif (is_string($value)) {
                    json_decode($value);
                    $json = json_last_error() == JSON_ERROR_NONE;
                }
            }

            $return .= $attribute;
            if (is_null($value)) {
                $return .= ' ';
            } else {
                $return .= '=' . (!$json ? '"' : "'");

                if (!is_array($value)) {
                    $return .= is_bool($value) ? ($value ? 'true' : 'false') : htmlentities($value);
                } else {
                    switch ($attribute) {
                        case 'style':
                            $return .= implode('; ', $value);
                            break;
                        default:
                            $return .= implode(' ', $value);
                            break;
                    }
                }
                $return .= (!$json ? '"' : "'") . ' ';
            }
        }

        return $return;
    }
public static function htmlAttribute(array $attributes = []) : string
    {
        $return = '';
        foreach ($attributes as $attribute => $value) {
            $json = false;
            if ($attribute == 'data-options') {
                if (is_array($value) || is_object($value)) {
                    $value = json_encode($value);
                    $json = true;
                } elseif (is_string($value)) {
                    json_decode($value);
                    $json = json_last_error() == JSON_ERROR_NONE;
                }
            }

            $return .= $attribute;
            if (is_null($value)) {
                $return .= ' ';
            } else {
                $return .= '=' . (!$json ? '"' : "'");

                if (!is_array($value)) {
                    $return .= is_bool($value) ? ($value ? 'true' : 'false') : htmlentities($value);
                } else {
                    switch ($attribute) {
                        case 'style':
                            $return .= implode('; ', $value);
                            break;
                        default:
                            $return .= implode(' ', $value);
                            break;
                    }
                }
                $return .= (!$json ? '"' : "'") . ' ';
            }
        }

        return $return;
    }
public static function htmlAttribute ( array $ attributes = [ ] ) : string { $ return = '' ; foreach ( $ attributes as $ attribute => $ value ) { $ json = false ; if ( $ attribute == 'data-options' ) { if ( is_array ( $ value ) || is_object ( $ value ) ) { $ value = json_encode ( $ value ) ; $ json = true ; } elseif ( is_string ( $ value ) ) { json_decode ( $ value ) ; $ json = json_last_error ( ) == JSON_ERROR_NONE ; } } $ return .= $ attribute ; if ( is_null ( $ value ) ) { $ return .= ' ' ; } else { $ return .= '=' . ( ! $ json ? '"' : "'" ) ; if ( ! is_array ( $ value ) ) { $ return .= is_bool ( $ value ) ? ( $ value ? 'true' : 'false' ) : htmlentities ( $ value ) ; } else { switch ( $ attribute ) { case 'style' : $ return .= implode ( '; ' , $ value ) ; break ; default : $ return .= implode ( ' ' , $ value ) ; break ; } } $ return .= ( ! $ json ? '"' : "'" ) . ' ' ; } } return $ return ; }
@param array $attributes

@return string
@param array $attributes