0

我正在压缩一些 CSS 和 JS 文件,并且使用 parse_url 获取 url 组件的方法很少。刚刚发现在 php 5.3.28 之前没有主机,我的压缩功能严重依赖它以获得正确的路径。

所以在 php 5.3.28 < 我得到

Array
(
    [path] => //fonts.googleapis.com/css
    [query] => family=Open+Sans
)

和 5.3.28 >

Array
(
    [host] => fonts.googleapis.com
    [path] => /css
    [query] => family=Open+Sans
)

任何人都可以发布一个可能的替换函数或实际的 5.3.28 > parse_url 或我可以使用的正则表达式。

任何帮助表示赞赏。

4

1 回答 1

1

如评论之一所述,在 5.4.7 版本之前,PHP 将无法识别没有该方案的 url 的主机部分。检查parse_url() 在向 example.com 传递问题时返回错误以获取一些可能的解决方案,其中之一是手动添加默认方案,或者,您可以尝试此示例。

$url = '//fonts.googleapis.com/css?family=Open+Sans';
$url_parts = parse_url( $url );

if ( !isset( $url_parts['host'] ) ) {
    $part = ( isset( $url_parts['path'] ) ? $url_parts['path'] : '' ) . ( isset( $url_parts['query'] ) ? '?' . $url_parts['query'] : '' ) . ( isset( $url_parts['fragment'] ) ? '#' . $url_parts['fragment'] : '' );    
    $host = strstr( $url, $part, true );
    $url_parts['host'] = substr( $host, strpos( $host, '//' ) + 2 );
}
于 2014-11-29T19:23:42.300 回答