WP_HTML_Tag_Processor::get_attribute_names_with_prefix()publicWP 6.2.0

Gets lowercase names of all attributes matching a given prefix in the current tag.

Note that matching is case-insensitive. This is in accordance with the spec:

There must never be two or more attributes on > the same start tag whose names are an ASCII > case-insensitive match for each other.

- HTML 5 spec

Example:

$p = new WP_HTML_Tag_Processor( '<div data-ENABLED class="test" DATA-test-id="14">Test</div>' );
$p->next_tag( array( 'class_name' => 'test' ) ) === true;
$p->get_attribute_names_with_prefix( 'data-' ) === array( 'data-enabled', 'data-test-id' );
$p->next_tag() === false;
$p->get_attribute_names_with_prefix( 'data-' ) === null;

Method of the class: WP_HTML_Tag_Processor{}

No Hooks.

Return

Array|null. List of attribute names, or null when no tag opener is matched.

Usage

$WP_HTML_Tag_Processor = new WP_HTML_Tag_Processor();
$WP_HTML_Tag_Processor->get_attribute_names_with_prefix( $prefix );
$prefix(string) (required)
Prefix of requested attribute names.

Notes

Changelog

Since 6.2.0 Introduced.

WP_HTML_Tag_Processor::get_attribute_names_with_prefix() code WP 6.6.2

public function get_attribute_names_with_prefix( $prefix ) {
	if (
		self::STATE_MATCHED_TAG !== $this->parser_state ||
		$this->is_closing_tag
	) {
		return null;
	}

	$comparable = strtolower( $prefix );

	$matches = array();
	foreach ( array_keys( $this->attributes ) as $attr_name ) {
		if ( str_starts_with( $attr_name, $comparable ) ) {
			$matches[] = $attr_name;
		}
	}
	return $matches;
}