我正在压缩一些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或我可以使用的正则表达式。
感谢任何帮助。
答案 0 :(得分:1)
如其中一条评论中所述,在5.4.7版本之前,如果没有该方案,PHP将无法识别网址的主机部分。检查parse_url() returns an error when example.com is passed问题以获取一些可能的解决方案,其中一个是手动添加默认方案,或者,您可以尝试此示例。
$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 );
}