diff --git a/wp-includes/html-api/class-wp-html-tag-processor.php b/wp-includes/html-api/class-wp-html-tag-processor.php
index 233d47eb8d..2b115dd156 100644
--- a/wp-includes/html-api/class-wp-html-tag-processor.php
+++ b/wp-includes/html-api/class-wp-html-tag-processor.php
@@ -3385,6 +3385,58 @@ class WP_HTML_Tag_Processor {
return $this->comment_type;
}
+ /**
+ * Returns the text of a matched comment or null if not on a comment type node.
+ *
+ * This method returns the entire text content of a comment node as it
+ * would appear in the browser.
+ *
+ * This differs from {@see ::get_modifiable_text()} in that certain comment
+ * types in the HTML API cannot allow their entire comment text content to
+ * be modified. Namely, "bogus comments" of the form ``
+ * will create a comment whose text content starts with `?`. Note that if
+ * that character were modified, it would be possible to change the node
+ * type.
+ *
+ * @since 6.7.0
+ *
+ * @return string|null The comment text as it would appear in the browser or null
+ * if not on a comment type node.
+ */
+ public function get_full_comment_text(): ?string {
+ if ( self::STATE_FUNKY_COMMENT === $this->parser_state ) {
+ return $this->get_modifiable_text();
+ }
+
+ if ( self::STATE_COMMENT !== $this->parser_state ) {
+ return null;
+ }
+
+ switch ( $this->get_comment_type() ) {
+ case self::COMMENT_AS_HTML_COMMENT:
+ case self::COMMENT_AS_ABRUPTLY_CLOSED_COMMENT:
+ return $this->get_modifiable_text();
+
+ case self::COMMENT_AS_CDATA_LOOKALIKE:
+ return "[CDATA[{$this->get_modifiable_text()}]]";
+
+ case self::COMMENT_AS_PI_NODE_LOOKALIKE:
+ return "?{$this->get_tag()}{$this->get_modifiable_text()}?";
+
+ /*
+ * This represents "bogus comments state" from HTML tokenization.
+ * This can be entered by `` or `html[ $this->text_starts_at - 1 ];
+ $comment_start = '?' === $preceding_character ? '?' : '';
+ return "{$comment_start}{$this->get_modifiable_text()}";
+ }
+
+ return null;
+ }
+
/**
* Subdivides a matched text node, splitting NULL byte sequences and decoded whitespace as
* distinct nodes prefixes.
diff --git a/wp-includes/version.php b/wp-includes/version.php
index 6ceac1f79f..fedbeb62b2 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -16,7 +16,7 @@
*
* @global string $wp_version
*/
-$wp_version = '6.7-alpha-59074';
+$wp_version = '6.7-alpha-59075';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.