WP_HTML_Processor::serialize()publicWP 6.7.0

Returns normalized HTML for a fragment by serializing it.

This differs from WP_HTML_Processor::normalize() in that it starts with a specific HTML Processor, which _must_ not have already started scanning; it must be in the initial ready state and will be in the completed state once serialization is complete.

Many aspects of an input HTML fragment may be changed during normalization.

  • Attribute values will be double-quoted.
  • Duplicate attributes will be removed.
  • Omitted tags will be added.
  • Tag and attribute name casing will be lower-cased,
except for specific SVG and MathML tags or attributes.
  • Text will be re-encoded, null bytes handled,
    and invalid UTF-8 replaced with U+FFFD.
  • Any incomplete syntax trailing at the end will be omitted,
    for example, an unclosed comment opener will be removed.

Example:

$processor = WP_HTML_Processor::create_fragment( '<a href=#anchor v=5 href="/" enabled>One</a another v=5><!--' );
echo $processor->serialize();
// <a href="#anchor" v="5" enabled>One</a>
$processor = WP_HTML_Processor::create_fragment( '<div></p>fun<table><td>cell</div>' );
echo $processor->serialize();
// <div><p></p>fun<table><tbody><tr><td>cell</td></tr></tbody></table></div>
$processor = WP_HTML_Processor::create_fragment( '<![CDATA[invalid comment]]> syntax < <> "oddities"' );
echo $processor->serialize();
// <!--[CDATA[invalid comment]]--> syntax < <> "oddities"

Method of the class: WP_HTML_Processor{}

No Hooks.

Return

String|null. Normalized HTML markup represented by processor, or null if unable to generate serialization.

Usage

$WP_HTML_Processor = new WP_HTML_Processor();
$WP_HTML_Processor->serialize(): ?string;

Changelog

Since 6.7.0 Introduced.

WP_HTML_Processor::serialize() code WP 6.7.1

public function serialize(): ?string {
	if ( WP_HTML_Tag_Processor::STATE_READY !== $this->parser_state ) {
		wp_trigger_error(
			__METHOD__,
			'An HTML Processor which has already started processing cannot serialize its contents. Serialize immediately after creating the instance.',
			E_USER_WARNING
		);
		return null;
	}

	$html = '';
	while ( $this->next_token() ) {
		$html .= $this->serialize_token();
	}

	if ( null !== $this->get_last_error() ) {
		wp_trigger_error(
			__METHOD__,
			"Cannot serialize HTML Processor with parsing error: {$this->get_last_error()}.",
			E_USER_WARNING
		);
		return null;
	}

	return $html;
}