annotate php/rel2abs.php @ 2314:cbc26d0f104a
Merge branch 'master' of https://github.com/BrechtDeMan/WebAudioEvaluationTool
author |
www-data <www-data@sucuk.dcs.qmul.ac.uk> |
date |
Fri, 29 Apr 2016 15:21:00 +0100 |
parents |
30c012132427 |
children |
464c6c6692d6 |
rev |
line source |
nicholas@2249
|
1 <?php
|
nicholas@2249
|
2
|
nicholas@2249
|
3 //http://stackoverflow.com/questions/4444475/transfrom-relative-path-into-absolute-url-using-php
|
nicholas@2249
|
4 function rel2abs($rel, $base)
|
nicholas@2249
|
5 {
|
nicholas@2249
|
6 /* return if already absolute URL */
|
nicholas@2249
|
7 if (parse_url($rel, PHP_URL_SCHEME) != '' || substr($rel, 0, 2) == '//') return $rel;
|
nicholas@2249
|
8
|
nicholas@2249
|
9 /* queries and anchors */
|
nicholas@2249
|
10 if ($rel[0]=='#' || $rel[0]=='?') return $base.$rel;
|
nicholas@2249
|
11
|
nicholas@2249
|
12 /* parse base URL and convert to local variables:
|
nicholas@2249
|
13 $scheme, $host, $path */
|
nicholas@2249
|
14 extract(parse_url($base));
|
nicholas@2249
|
15
|
nicholas@2249
|
16 /* remove non-directory element from path */
|
nicholas@2249
|
17 $path = preg_replace('#/[^/]*$#', '', $path);
|
nicholas@2249
|
18
|
nicholas@2249
|
19 /* destroy path if relative url points to root */
|
nicholas@2249
|
20 if ($rel[0] == '/') $path = '';
|
nicholas@2249
|
21
|
nicholas@2249
|
22 /* dirty absolute URL */
|
nicholas@2249
|
23 $abs = "$host$path/$rel";
|
nicholas@2249
|
24
|
nicholas@2249
|
25 /* replace '//' or '/./' or '/foo/../' with '/' */
|
nicholas@2249
|
26 $re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
|
nicholas@2249
|
27 for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {}
|
nicholas@2249
|
28
|
nicholas@2249
|
29 /* absolute URL is ready! */
|
nicholas@2249
|
30 return $scheme.'://'.$abs;
|
nicholas@2249
|
31 }
|
nicholas@2249
|
32 ?> |