WP_REST_URL_Details_Controller::get_icon()
Parses the site icon from the provided HTML.
Method of the class: WP_REST_URL_Details_Controller{}
No Hooks.
Return
String
. The icon URI on success. Empty string if not found.
Usage
// private - for code of main (parent) class only $result = $this->get_icon( $html, $url );
- $html(string) (required)
- The HTML from the remote website at URL.
- $url(string) (required)
- The target website URL.
Changelog
Since 5.9.0 | Introduced. |
WP_REST_URL_Details_Controller::get_icon() WP REST URL Details Controller::get icon code WP 6.6.2
private function get_icon( $html, $url ) { // Grab the icon's link element. $pattern = '#<link\s[^>]*rel=(?:[\"\']??)\s*(?:icon|shortcut icon|icon shortcut)\s*(?:[\"\']??)[^>]*\/?>#isU'; preg_match( $pattern, $html, $element ); if ( empty( $element[0] ) || ! is_string( $element[0] ) ) { return ''; } $element = trim( $element[0] ); // Get the icon's href value. $pattern = '#href=([\"\']??)([^\" >]*?)\\1[^>]*#isU'; preg_match( $pattern, $element, $icon ); if ( empty( $icon[2] ) || ! is_string( $icon[2] ) ) { return ''; } $icon = trim( $icon[2] ); // If the icon is a data URL, return it. $parsed_icon = parse_url( $icon ); if ( isset( $parsed_icon['scheme'] ) && 'data' === $parsed_icon['scheme'] ) { return $icon; } // Attempt to convert relative URLs to absolute. if ( ! is_string( $url ) || '' === $url ) { return $icon; } $parsed_url = parse_url( $url ); if ( isset( $parsed_url['scheme'] ) && isset( $parsed_url['host'] ) ) { $root_url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . '/'; $icon = WP_Http::make_absolute_url( $icon, $root_url ); } return $icon; }