*/
namespace MyThemeShop\Helpers;
/**
* HTML class.
*/
class HTML {
/**
* Extract attributes from a html tag.
*
* @param string $elem Extract attributes from tag.
* @return array
*/
public static function extract_attributes( $elem ) {
$regex = '#([^\s=]+)\s*=\s*(\'[^<\']*\'|"[^<"]*")#';
preg_match_all( $regex, $elem, $attributes, PREG_SET_ORDER );
$new = [];
foreach ( $attributes as $attribute ) {
$new[ $attribute[1] ] = substr( $attribute[2], 1, -1 );
}
return $new;
}
/**
* Generate html attribute string for array.
*
* @param array $attributes Contains key/value pair to generate a string.
* @param string $prefix If you want to append a prefic before every key.
* @return string
*/
public static function attributes_to_string( $attributes = [], $prefix = '' ) {
// Early Bail!
if ( empty( $attributes ) ) {
return false;
}
$out = '';
foreach ( $attributes as $key => $value ) {
if ( true === $value || false === $value ) {
$value = $value ? 'true' : 'false';
}
$out .= ' ' . esc_html( $prefix . $key );
$out .= empty( $value ) ? '' : sprintf( '="%s"', esc_attr( $value ) );
}
return $out;
}
}