3v4l.org

run code in 300+ PHP versions simultaneously
<?php 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 ); $element = ! empty( $element[0] ) && is_string( $element[0] ) ? trim( $element[0] ) : ''; if ( empty( $element ) ) { return ''; } // Get the icon's href value. $pattern = '#href=([\"\']??)([^\" >]*?)\\1[^>]*#isU'; preg_match( $pattern, $element, $icon ); $icon = ! empty( $icon[2] ) && is_string( $icon[2] ) ? trim( $icon[2] ) : ''; if ( empty( $icon ) ) { return ''; } // If the icon is a data URL, return it. $parsed_icon = parse_url( $icon ); var_dump( $parsed_icon ); if ( 'data' === $parsed_icon['scheme'] ) { return $icon; } // Attempt to convert relative URLs to absolute. $parsed_url = parse_url( $url ); $root_url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . '/'; $icon = WP_Http::make_absolute_url( $icon, $root_url ); return $icon; } $html = array( '<link href="data:image/png;base64,iVBORw0KGgo=" rel="icon" type="image/png" />', '<link rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" type="image/x-icon" />', ); foreach ( $html as $icon_html ) { $icon = get_icon( $icon_html, '' ); var_dump( $icon ); }

preferences:
34.47 ms | 407 KiB | 5 Q