common = $common; } /** * Processes the provided content to modify `` and `` tags. * * This method replaces the `srcset` and `sizes` attributes in `` tags with `data-srcset` and `data-sizes`, * and applies custom modifications to `` tags using utility methods. * * @param string $content The content containing `` and `` tags to be processed. * * @return string The modified content with lazy-loading attributes applied. */ public function run( $content ) { $content = preg_replace_callback( '~(]+>)~i', array( $this, 'tag_img' ), $content ); $content = preg_replace_callback( '~(]+>)~i', array( $this, 'tag_source' ), $content ); return $content; } /** * Processes a matched `` tag. * * This method retrieves the dimensions of the image and replaces its attributes with lazy-loading compatible attributes. * * @param array $matches The matches from the regular expression containing the `` tag. * * @return string The modified `` tag with lazy-loading attributes applied. */ public function tag_img( $matches ) { $content = $matches[0]; // get image dimensions. $dim = $this->common->tag_get_dimensions( $content ); return $this->common->tag_img_content_replace( $content, $dim ); } /** * Processes a matched `` tag. * * This method replaces the `srcset` and `sizes` attributes with `data-srcset` and `data-sizes` * to delay loading the sources until needed. * * @param array $matches The matches from the regular expression containing the `` tag. * * @return string The modified `` tag with lazy-loading attributes applied. */ private function tag_source( $matches ) { $content = $matches[0]; $content = preg_replace( '~(\s)(srcset|sizes)=~i', '$1data-$2=', $content ); return $content; } }