2014-07-06 23 views
0

如果我在PHP中有兩個URL(例如,/r/jquery.jshttp://domain.tld/r/jquery.js),是否有一種比較這兩種方法的簡潔方法,以瀏覽器在訪問指定URL時解釋它們的方式進行解釋?比較來自瀏覽器角度的兩個URL

因此,對於這種比較,三個URL給出:

  • $url_a - 網址改爲$url_b
  • $url_b比較 - URL以$url_a
  • $url_c比較 - 與基地相對URL

例如:
如果$url_a = '/r/jquery.js'$url_b = 'http://domain.tld/r/jquery.js',比較

  • 應該給true如果$url_c = 'http://domain.tld/s/index.php'
  • 應該給false如果$url_c = 'https://domain.tld/s/index.php'
  • 應該給false如果$url_c = 'http://subdomain.domain.tld/s/index.php'

我正在尋找一個完整的解決方案包括像/r///../r/jquery.js可以等於http://domain.tld/r/jquery.js(取決於$url_c)等等。

由於可能有更多的方面比外行人(我)知道,我認爲庫或內置PHP功能將是必需的。雖然我也會對Linux命令行工具感興趣,但這並不是最好的選擇,因爲我的測試環境是windows,儘管我部署到了Linux。

題外話/背景資料:

我目前正在實施一個系統到我的網站管理JavaScript,CSS和其他依賴。爲此,我需要比較一下JavaScript文件是否已經實現/依賴與否。但是在那個時候,我只有這些文件的URL(這非常好!我不會改變它!)。

+1

我想所有的URL轉換爲完整路徑和*然後*對它們進行比較。 – scunliffe

+1

[檢查此](http://stackoverflow.com/questions/4444475/transfrom-relative-path-into-absolute-url-using-php) – James

回答

1

要走的路是(由@scunliffe和@詹姆斯建議):

都轉換爲絕對URL,然後比較字符串平等。

https://github.com/monkeysuffrage/phpuri

編輯:

尚未檢驗:

require_once 'phpuri.php'; 
function urlsEqual($urlA, $urlB, $base) { 
    $oBase = phpUri::parse($base); 
    $oUrlA = $oBase->join($urlA); 
    $oUrlB = $oBase->join($urlB); 
    return $oUrlA == $oUrlB; 
} 

$url_a = '/r/jquery.js'; 
$url_b = 'http://domain.tld/r/jquery.js'; 
$url_c = 'http://domain.tld/s/index.php'; 
if(urlsEqual($url_a, $url_b, $url_c)) 
    echo $url_a.' == '.$url_b; 
else 
    echo $url_a.' != '.$url_b;