是否有parse_url等效或自定义解析url函数PHP?

时间:2014-11-29 17:57:06

标签: php regex parse-url

我正在压缩一些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或我可以使用的正则表达式。

感谢任何帮助。

1 个答案:

答案 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 );
}