function Html::serialize
Same name in other branches
- 9 core/lib/Drupal/Component/Utility/Html.php \Drupal\Component\Utility\Html::serialize()
- 8.9.x core/lib/Drupal/Component/Utility/Html.php \Drupal\Component\Utility\Html::serialize()
- 10 core/lib/Drupal/Component/Utility/Html.php \Drupal\Component\Utility\Html::serialize()
Converts the body of a \DOMDocument back to an HTML snippet.
The function serializes the body part of a \DOMDocument back to an HTML snippet. The resulting HTML snippet will be properly formatted to be compatible with HTML user agents.
Parameters
\DOMDocument $document: A \DOMDocument object to serialize, only the tags below the first <body> node will be converted.
Return value
string A valid HTML snippet, as a string.
12 calls to Html::serialize()
- EditorFileReference::process in core/
modules/ editor/ src/ Plugin/ Filter/ EditorFileReference.php - Performs the filter processing.
- FilterAlign::process in core/
modules/ filter/ src/ Plugin/ Filter/ FilterAlign.php - FilterHtml::filterAttributes in core/
modules/ filter/ src/ Plugin/ Filter/ FilterHtml.php - Provides filtering of tag attributes into accepted HTML.
- FilterImageLazyLoad::transformImages in core/
modules/ filter/ src/ Plugin/ Filter/ FilterImageLazyLoad.php - Transform markup of images to include loading="lazy".
- Html::normalize in core/
lib/ Drupal/ Component/ Utility/ Html.php - Normalizes an HTML snippet.
File
-
core/
lib/ Drupal/ Component/ Utility/ Html.php, line 304
Class
- Html
- Provides DOMDocument helpers for parsing and serializing HTML strings.
Namespace
Drupal\Component\UtilityCode
public static function serialize(\DOMDocument $document) {
$body_node = $document->getElementsByTagName('body')
->item(0);
$html = '';
if ($body_node !== NULL) {
foreach ($body_node->getElementsByTagName('script') as $node) {
static::escapeCdataElement($node);
}
foreach ($body_node->getElementsByTagName('style') as $node) {
static::escapeCdataElement($node, '/*', '*/');
}
// Serialize the body using our custom set of rules.
// @see \Masterminds\HTML5::saveHTML()
$stream = fopen('php://temp', 'wb');
$rules = new HtmlSerializerRules($stream);
foreach ($body_node->childNodes as $node) {
$traverser = new Traverser($node, $stream, $rules);
$traverser->walk();
}
$rules->unsetTraverser();
$html = stream_get_contents($stream, -1, 0);
fclose($stream);
}
// Normalize all newlines.
$html = str_replace([
"\r\n",
"\r",
], "\n", $html);
return $html;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.