Heim >Backend-Entwicklung >PHP-Tutorial >相对路径 转 网络绝对路径(支持二级域名) ./a.jpg => http://www.w.com/a.jpg

相对路径 转 网络绝对路径(支持二级域名) ./a.jpg => http://www.w.com/a.jpg

WBOY
WBOYOriginal
2016-07-25 08:48:581568Durchsuche
昨天在写用迅雷下载时,发现 ./a.jpg的文件转成迅雷不是网络地址,然后写了一个方法转换。目前处在PHP基础层次,有不足还望请教。
会自动判断当前的域名与主域名,以下是形式:
./a.jpg => http://about.w.com/a.jpg;
../a.jpg => http://www.w.com/a.jpg
  1. /**
  2. * 相对路径转网络绝对路径
  3. * @param string $file
  4. * @return string
  5. */
  6. function dirToHttpUrl($file) {
  7. //判断文件是否存在
  8. if (!file_exists($file)) {
  9. return false;
  10. }
  11. //域名
  12. $nowUrl = dirname('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); //当前域名
  13. $tempUrl = explode('.', $_SERVER['HTTP_HOST']);
  14. $dirUrl = 'http://www.'.$tempUrl[1].'.'.$tempUrl[2].'/'; //主域名
  15. //文件路径的层次统计
  16. $tempFile = explode('../', $file);
  17. $tempNum = array_count_values($tempFile);
  18. if (array_key_exists('', $tempNum)) {
  19. $fileNum = $tempNum[''];
  20. $fileEnd = end($tempFile);
  21. } else {
  22. $fileNum = 0;
  23. $fileEnd = '/'.substr($tempFile[0], 2);
  24. }
  25. //域名层次统计
  26. $tempWeb = explode('/', $nowUrl);
  27. $tempWeb = array_slice($tempWeb, 3);
  28. $webNum = count($tempWeb);
  29. //文件对应的域名
  30. if ($fileNum > $webNum) {
  31. $nowUrl = $dirUrl;
  32. }
  33. //返回
  34. return $nowUrl.$fileEnd;
  35. }
  36. //dirToHttpUrl('./1.jpg');
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn