PHP 7 >= 7.1, PHP 8
Generate a string of HTML attributes.
Using Composer:
$ composer require mcaskill/php-html-build-attributes
Alternatively, download Function.HTML-Build-Attributes.php from the package
source and save the file into your project path somewhere.
This package follows semantic versioning, which means breaking changes may occur between major releases.
html_build_attributes( array|object $attr [, ?callable $callback = null ] ) : string- 
attr— Associative array or object containing properties, representing attribute names and values.If attris a non-iterable object, then only accessible non-static properties will be incorporated into the result.If an attribute name is an empty string, the attribute is ignored. The attribute name will be trimmed of leading/trailing whitespace. If an attribute value is callable (either as a Closureor invokable), it is called and the returned value continues processing.If an attribute value is null, the attribute is ignored.If an attribute value is an arrayable or a stringable object, it is converted to its primitive type. If an attribute value is a boolean and true, the attribute will be rendered without a value, otherwise the attribute is ignored.If an attribute value is an array, only numbers and strings are accepted. Strings of the array will be trimmed of leading/trailing whitespace. If the filtered array is empty, the attribute is ignored. Any other value will be serialized using json_encode().
- 
callback— Callback function to escape the values for HTML attributes.If no function is provided, htmlspecialchars()is used;If using WordPress, the esc_attr()function is used.
Returns a string of HTML attributes or a empty string if attr is invalid or empty.
$attr = [
  'type'           => 'file',
  'id'             => 'avatar',
  'name'           => 'avatar',
  'class'          => [ 'form-control', 'form-control-sm' ],
  'multiple'       => true,
  'disabled'       => false,
  'accept'         => implode(',', [ 'image/png', 'image/jpeg' ]),
  'data-max-files' => 3,
];
echo '<input ' . html_build_attributes($attr) . '>';The above example will output:
<input type="file" id="avatar" name="avatar" class="form-control form-control-sm" multiple accept="image/png,image/jpeg" data-max-files="3">