src/DotsUnited/BundleFu/Filter/CssUrlRewriteFilter.php
protected function rewriteUrl($matches)
    {
        $matchedUrl = trim($matches['url']);

        // First check also matches protocol-relative urls like //example.com/images/bg.gif
        if ('/' === $matchedUrl[0] || false !== strpos($matchedUrl, '://') || 0 === strpos($matchedUrl, 'data:')) {
            return $matches[0];
        }

        $sourceUrl = dirname($this->file);

        if ('.' === $sourceUrl) {
            $sourceUrl = '/';
        }

        $path = $this->bundleUrl;

        if (false !== strpos($path, '://') || 0 === strpos($path, '//')) {
            // parse_url() does not work with protocol-relative urls
            list(, $url) = explode('//', $path, 2);
            list(, $path) = explode('/', $url, 2);
        }

        $bundleUrl = dirname($path);

        if ('.' === $bundleUrl) {
            $bundleUrl = '/';
        }

        $url = $this->rewriteRelative($matchedUrl, $sourceUrl, $bundleUrl);

        return str_replace($matchedUrl, $url, $matches[0]);
    }
protected function rewriteUrl($matches)
    {
        $matchedUrl = trim($matches['url']);

        // First check also matches protocol-relative urls like //example.com/images/bg.gif
        if ('/' === $matchedUrl[0] || false !== strpos($matchedUrl, '://') || 0 === strpos($matchedUrl, 'data:')) {
            return $matches[0];
        }

        $sourceUrl = dirname($this->file);

        if ('.' === $sourceUrl) {
            $sourceUrl = '/';
        }

        $path = $this->bundleUrl;

        if (false !== strpos($path, '://') || 0 === strpos($path, '//')) {
            // parse_url() does not work with protocol-relative urls
            list(, $url) = explode('//', $path, 2);
            list(, $path) = explode('/', $url, 2);
        }

        $bundleUrl = dirname($path);

        if ('.' === $bundleUrl) {
            $bundleUrl = '/';
        }

        $url = $this->rewriteRelative($matchedUrl, $sourceUrl, $bundleUrl);

        return str_replace($matchedUrl, $url, $matches[0]);
    }
protected function rewriteUrl ( $ matches ) { $ matchedUrl = trim ( $ matches [ 'url' ] ) ; // First check also matches protocol-relative urls like //example.com/images/bg.gif if ( '/' === $ matchedUrl [ 0 ] || false !== strpos ( $ matchedUrl , '://' ) || 0 === strpos ( $ matchedUrl , 'data:' ) ) { return $ matches [ 0 ] ; } $ sourceUrl = dirname ( $ this -> file ) ; if ( '.' === $ sourceUrl ) { $ sourceUrl = '/' ; } $ path = $ this -> bundleUrl ; if ( false !== strpos ( $ path , '://' ) || 0 === strpos ( $ path , '//' ) ) { // parse_url() does not work with protocol-relative urls list ( , $ url ) = explode ( '//' , $ path , 2 ) ; list ( , $ path ) = explode ( '/' , $ url , 2 ) ; } $ bundleUrl = dirname ( $ path ) ; if ( '.' === $ bundleUrl ) { $ bundleUrl = '/' ; } $ url = $ this -> rewriteRelative ( $ matchedUrl , $ sourceUrl , $ bundleUrl ) ; return str_replace ( $ matchedUrl , $ url , $ matches [ 0 ] ) ; }
Callback which rewrites matched CSS ruls.

@param  array  $matches
@return string
Callback which rewrites matched CSS ruls .