什麼是從基本URL和潛在相對路徑構建URL的PHP等價物? Python提供了urlparse.urljoin
,但在PHP中似乎沒有任何標準實現。PHP等效於Python的`urljoin`
我發現的最接近的是人們暗示使用parse_url
,然後重建從零件的URL,但實現這樣做,通常得到像協議相對鏈接錯誤(例如,//example.com/foo
變成http://example.com/foo
或https://example.com/foo
,繼承基本URL的協議),並且它也不容易處理父目錄鏈接等事情。下面是那些在urlparse.urljoin
正常工作的事情例子:
>>> from urlparse import urljoin
>>> urljoin('http://example.com/some/directory/filepart', 'foo.jpg')
'http://example.com/some/directory/foo.jpg'
>>> urljoin('http://example.com/some/directory/', 'foo.jpg')
'http://example.com/some/directory/foo.jpg'
>>> urljoin('http://example.com/some/directory/', '../foo.jpg')
'http://example.com/some/foo.jpg'
>>> urljoin('http://example.com/some/directory/', '/foo.jpg')
'http://example.com/foo.jpg'
>>> urljoin('http://example.com/some/directory/', '//images.example.com/bar.jpg')
'http://images.example.com/bar.jpg'
>>> urljoin('https://example.com/some/directory/', '//images.example.com/bar.jpg')
'https://images.example.com/bar.jpg'
>>> urljoin('ftp://example.com/some/directory/', '//images.example.com/bar.jpg')
'ftp://images.example.com/bar.jpg'
>>> urljoin('http://example.com:8080/some/directory/', '//images.example.com/bar.jpg')
'http://images.example.com/bar.jpg'
是否有實現PHP相同,或備受推崇簡單的庫或執行實際獲取所有這些情況下,正確的習慣的方法?
我相信你將不得不做它 –
@RyanVincent我還沒有看到任何東西,只是更多的OO方式''parse_url'。相對路徑連接比僅僅替換URL部分要複雜得多。 – fluffy