: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
namespace Smush\Core\Parser;
public function __construct( $page_url, $page_markup ) {
$this->page_url = $page_url;
$this->page_markup = $page_markup;
$this->parser = new Parser();
public function parse_page() {
$page_markup = $this->page_markup;
$base_tag_url = $this->parser->get_base_url( $page_markup );
$base_url = $base_tag_url ?: $this->page_url;
$styles = $this->parser->get_inline_styles( $page_markup, $base_url );
$composite_elements = $this->parser->get_composite_elements( $page_markup, $base_url );
$page_markup = $this->replace_composites_with_placeholders( $page_markup, $composite_elements );
$elements = $this->parser->get_elements_with_image_attributes( $page_markup, $base_url );
$iframe_elements = $this->parser->get_iframe_elements( $page_markup, $base_url );
* @param $composite_elements Composite_Element[]
private function replace_composites_with_placeholders( $markup, $composite_elements ) {
$placeholder_replacement = new Placeholder_Replacement();
if ( empty( $composite_elements ) ) {
$html_elements = array_map( function ( $composite_element ) {
return $composite_element->get_markup();
}, $composite_elements );
return $placeholder_replacement->add_placeholders( $markup, $html_elements );