Skip to content

Commit 6c00c00

Browse files
HTML API: Use case insensitive tag_name comparison in ::next_tag.
The HTML API `::next_tag` method now performs case-insensitive matching when searching for tags by name. For example, searching for 'DIV' will match both '<div>' and '<DIV>' tags. Props jonsurrell, dmsnell. Fixes #62427. git-svn-id: https://develop.svn.wordpress.org/trunk@59422 602fd350-edb4-49c9-b593-d223f7449a82
1 parent 11e4c7c commit 6c00c00

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/wp-includes/html-api/class-wp-html-processor.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,10 @@ public function next_tag( $query = null ): bool {
557557
return false;
558558
}
559559

560+
if ( isset( $query['tag_name'] ) ) {
561+
$query['tag_name'] = strtoupper( $query['tag_name'] );
562+
}
563+
560564
$needs_class = ( isset( $query['class_name'] ) && is_string( $query['class_name'] ) )
561565
? $query['class_name']
562566
: null;

tests/phpunit/tests/html-api/wpHtmlProcessor.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,4 +1042,19 @@ public function test_ensure_next_token_method_extensibility( $html, $expected_to
10421042

10431043
$this->assertEquals( $expected_token_counts, $processor->token_seen_count, 'Snapshot: ' . var_export( $processor->token_seen_count, true ) );
10441044
}
1045+
1046+
/**
1047+
* Ensure that lowercased tag_name query matches tags case-insensitively.
1048+
*
1049+
* @group 62427
1050+
*/
1051+
public function test_next_tag_lowercase_tag_name() {
1052+
// The upper case <DIV> is irrelevant but illustrates the case-insentivity.
1053+
$processor = WP_HTML_Processor::create_fragment( '<section><DIV>' );
1054+
$this->assertTrue( $processor->next_tag( array( 'tag_name' => 'div' ) ) );
1055+
1056+
// The upper case <RECT> is irrelevant but illustrates the case-insentivity.
1057+
$processor = WP_HTML_Processor::create_fragment( '<svg><RECT>' );
1058+
$this->assertTrue( $processor->next_tag( array( 'tag_name' => 'rect' ) ) );
1059+
}
10451060
}

0 commit comments

Comments
 (0)