Timber\ImageHelper::analyze_url PHP Method

analyze_url() private static method

The image is expected to be either part of a theme, plugin, or an upload.
private static analyze_url ( string $url ) : array
$url string an URL (absolute or relative) pointing to an image
return array an array (see keys in code below)
    private static function analyze_url($url)
    {
        $result = array('url' => $url, 'absolute' => URLHelper::is_absolute($url), 'base' => 0, 'subdir' => '', 'filename' => '', 'extension' => '', 'basename' => '');
        $upload_dir = wp_upload_dir();
        $tmp = $url;
        if (0 === strpos($tmp, ABSPATH)) {
            // we've been given a dir, not an url
            $result['absolute'] = true;
            if (0 === strpos($tmp, $upload_dir['basedir'])) {
                $result['base'] = self::BASE_UPLOADS;
                // upload based
                $tmp = str_replace($upload_dir['basedir'], '', $tmp);
            }
            if (0 === strpos($tmp, WP_CONTENT_DIR)) {
                $result['base'] = self::BASE_CONTENT;
                // content based
                $tmp = str_replace(WP_CONTENT_DIR, '', $tmp);
            }
        } else {
            if (!$result['absolute']) {
                $tmp = site_url() . $tmp;
            }
            if (0 === strpos($tmp, $upload_dir['baseurl'])) {
                $result['base'] = self::BASE_UPLOADS;
                // upload based
                $tmp = str_replace($upload_dir['baseurl'], '', $tmp);
            }
            if (0 === strpos($tmp, content_url())) {
                $result['base'] = self::BASE_CONTENT;
                // content-based
                $tmp = str_replace(content_url(), '', $tmp);
            }
        }
        $parts = pathinfo($tmp);
        $result['subdir'] = $parts['dirname'] === '/' ? '' : $parts['dirname'];
        $result['filename'] = $parts['filename'];
        $result['extension'] = strtolower($parts['extension']);
        $result['basename'] = $parts['basename'];
        // todo filename
        return $result;
    }