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.
297publicstaticfunctioncreate_fragment($html,$context='<body>',$encoding='UTF-8'){298if('<body>'!==$context||'UTF-8'!==$encoding){299returnnull;300}301302if(!is_string($html)){303_doing_it_wrong(304__METHOD__,305__('The HTML parameter must be a string.'),306'6.9.0'307);308returnnull;309}310311$context_processor=static::create_full_parser("<!DOCTYPE html>{$context}",$encoding);312if(null===$context_processor){313returnnull;314}315316while($context_processor->next_tag()){317if(!$context_processor->is_virtual()){318$context_processor->set_bookmark('final_node');319}320}321322if(323!$context_processor->has_bookmark('final_node')||324!$context_processor->seek('final_node')325){326_doing_it_wrong(__METHOD__,__('No valid context element was detected.'),'6.8.0');327returnnull;328}329330return$context_processor->create_fragment_at_current_node($html);331}
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 7.0.4 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.