Creates an HTML processor in the fragment parsing mode.
Description
Use this for cases where you are processing chunks of HTML that will be found within a bigger HTML document, such as rendered block output that exists within a post, the_content inside a rendered site layout. Fragment parsing occurs within a context, which is an HTML element that the document will eventually be placed in. It becomes important when special elements have different rules than others, such as inside a TEXTAREA or a TITLE tag where things that look like tags are text, or inside a SCRIPT tag where things that look like HTML syntax are JS. The context value should be a representation of the tag into which the HTML is found. For most cases this will be the body element. The HTML form is provided because a context element may have attributes that impact the parse, such as with a SCRIPT tag and its type attribute. <h2>Current HTML Support</h2> <ul> <li>The only supported context is <body>, which is the default value.</li> <li>The only supported document encoding is UTF-8, which is the default value.</li> </ul>
Parameters
$htmlstring
Input HTML fragment to process.
$contextstringoptional
Context element for the fragment, must be default of <body>.Default: '<body>'
$encodingstringoptional
Text encoding of the document; must be default of 'UTF-8'.Default: 'UTF-8'
Return
static|null
The created processor if successful, otherwise null.
295publicstaticfunctioncreate_fragment($html,$context='<body>',$encoding='UTF-8'){296if('<body>'!==$context||'UTF-8'!==$encoding){297returnnull;298}299300if(!is_string($html)){301_doing_it_wrong(302__METHOD__,303__('The HTML parameter must be a string.'),304'6.9.0'305);306returnnull;307}308309$context_processor=static::create_full_parser("<!DOCTYPE html>{$context}",$encoding);310if(null===$context_processor){311returnnull;312}313314while($context_processor->next_tag()){315if(!$context_processor->is_virtual()){316$context_processor->set_bookmark('final_node');317}318}319320if(321!$context_processor->has_bookmark('final_node')||322!$context_processor->seek('final_node')323){324_doing_it_wrong(__METHOD__,__('No valid context element was detected.'),'6.8.0');325returnnull;326}327328return$context_processor->create_fragment_at_current_node($html);329}
History
Introduced in 6.4.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
6.6.0
Returns static instead of self so it can create subclass instances.from the docblock
6.4.0
Introduced.from the docblock
About this page
Parsed data
Generated from the wordpress-develop 6.9.7 tag, from src/wp-includes/html-api/class-wp-html-processor.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.