WP_REST_URL_Details_Controller::get_icon() – Parses the site icon from the provided HTML.

You appear to be a bot. Output may be restricted

Description

Parses the site icon from the provided HTML.

Usage

$string = WP_REST_URL_Details_Controller::get_icon( $html, $url );

Parameters

$html
( string ) required – The HTML from the remote website at URL.
$url
( string ) required – The target website URL.

Returns

string The icon URI on success. Empty string if not found.

Source

File name: wordpress/wp-includes/rest-api/endpoints/class-wp-rest-url-details-controller.php
Lines:

1 to 35 of 35
  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::WP_Http::make_absolute_url( $icon, $root_url );
    }

    return $icon;
  }
 

 View on GitHub View on Trac