WP_HTML_Tag_Processor::matches(): bool

In this article

This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.

Checks whether a given tag and its attributes match the search criteria.

Return

bool Whether the given tag and its attribute match the search criteria.

Source

private function matches() {
	if ( $this->is_closing_tag && ! $this->stop_on_tag_closers ) {
		return false;
	}

	// Does the tag name match the requested tag name in a case-insensitive manner?
	if ( null !== $this->sought_tag_name ) {
		/*
		 * String (byte) length lookup is fast. If they aren't the
		 * same length then they can't be the same string values.
		 */
		if ( strlen( $this->sought_tag_name ) !== $this->tag_name_length ) {
			return false;
		}

		/*
		 * Check each character to determine if they are the same.
		 * Defer calls to `strtoupper()` to avoid them when possible.
		 * Calling `strcasecmp()` here tested slowed than comparing each
		 * character, so unless benchmarks show otherwise, it should
		 * not be used.
		 *
		 * It's expected that most of the time that this runs, a
		 * lower-case tag name will be supplied and the input will
		 * contain lower-case tag names, thus normally bypassing
		 * the case comparison code.
		 */
		for ( $i = 0; $i < $this->tag_name_length; $i++ ) {
			$html_char = $this->html[ $this->tag_name_starts_at + $i ];
			$tag_char  = $this->sought_tag_name[ $i ];

			if ( $html_char !== $tag_char && strtoupper( $html_char ) !== $tag_char ) {
				return false;
			}
		}
	}

	if ( null !== $this->sought_class_name && ! $this->has_class( $this->sought_class_name ) ) {
		return false;
	}

	return true;
}

Changelog

VersionDescription
6.2.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.