diff --git a/core/lib/Drupal/Core/Template/SafeMarkup.php b/core/lib/Drupal/Core/Template/SafeMarkup.php index d2c538a..5407dc3 100644 --- a/core/lib/Drupal/Core/Template/SafeMarkup.php +++ b/core/lib/Drupal/Core/Template/SafeMarkup.php @@ -47,6 +47,12 @@ public static function implode($delimiter, array $array) { return SafeMarkup::create(implode($delimiter, $array)); } + public static function strReplace($search, $replace, $subject, &$count = NULL) { + $safe = $subject instanceof SafeMarkup; + $replacement = str_replace($search, $replace, $subject, $count); + return $safe ? SafeMarkup::create($replacement) : $replacement; + } + /** * Renders the markup. * diff --git a/core/modules/field/src/Plugin/views/field/Field.php b/core/modules/field/src/Plugin/views/field/Field.php index a01cb34..4a949f5 100644 --- a/core/modules/field/src/Plugin/views/field/Field.php +++ b/core/modules/field/src/Plugin/views/field/Field.php @@ -691,7 +691,7 @@ protected function renderItems($items) { } if ($this->options['multi_type'] == 'separator') { - return SafeMarkup::implode(Xss::filterAdmin($this->options['separator']), $items); + return SafeMarkup::create(implode(Xss::filterAdmin($this->options['separator']), $items)); } else { $item_list = array( diff --git a/core/modules/node/src/NodeViewBuilder.php b/core/modules/node/src/NodeViewBuilder.php index b210cae..138e1bd 100644 --- a/core/modules/node/src/NodeViewBuilder.php +++ b/core/modules/node/src/NodeViewBuilder.php @@ -125,7 +125,7 @@ public static function renderLinks(array $element, array $context) { \Drupal::moduleHandler()->alter('node_links', $links, $entity, $hook_context); } $markup = drupal_render($links); - $element['#markup'] = str_replace($placeholder, $markup, $element['#markup']); + $element['#markup'] = SafeMarkup::strReplace($placeholder, $markup, $element['#markup']); return $element; } diff --git a/core/modules/views/views.module b/core/modules/views/views.module index cc6e3d4..5a93d2e 100644 --- a/core/modules/views/views.module +++ b/core/modules/views/views.module @@ -904,7 +904,7 @@ function views_pre_render_views_form_views_form($element) { } // Apply substitutions to the rendered output. - $element['output']['#markup'] = str_replace($search, $replace, $element['output']['#markup']); + $element['output']['#markup'] = SafeMarkup::strReplace($search, $replace, $element['output']['#markup']); // Sort, render and add remaining form fields. $children = Element::children($element, TRUE);