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;
}
}