<?php /** * 作用: 根據參考url獲取 要轉換的url的 絕對地址(http://xxx) * @param string $url 參考url * @param string $filename 要轉換的url * @return string 轉換後的url */ function get_abs_url($url, $filename) { // 如果是http|https|ftp|//開頭的 if (preg_match('/^[a-zA-Z]*\:?\/\//', $filename)) { return $filename; } // 如果是 /common/css/index.css if (substr($filename, 0, 1) == '/') { preg_match('/^[^\/]*\/\/[^\/]+/', $url, $domain); return $domain[0] . $filename; } // 去掉問號和#號後面的字元, 刪除檔名, 只保留目錄 $url = strstr($url, '?', true) ? strstr($url, '?', true) : (strstr($url, '#', true) ? strstr($url, '#', true) : $url); $url = preg_replace('/[^\/]*$/', '', $url); // 如果是 ../../common/css/index.css if (substr($filename, 0, 3) == '../') { $filename = $url . $filename; while (preg_match('/[^\/\.]+\/\.\.\//', $filename)) { $filename = preg_replace('/[^\/\.]+\/\.\.\//', '', $filename); } return $filename; } // 如果是 ./common/css/index.css if (substr($filename, 0, 2) == './') { return str_replace('/./', '/', $url . $filename); } return $url . $filename; }上面的函式實現了以下幾種轉換模式
echo get_abs_url('http://www.baidu.com/blog/shuai/article/1.html?php=php#hello', '../../../common/css.css'); echo '<br />'; echo get_abs_url('http://www.baidu.com/blog/shuai/article/1.html?php=php#hello', 'http://static.baidu.com/common/css.css'); echo '<br />'; echo get_abs_url('http://www.baidu.com/blog/shuai/article/1.html?php=php#hello', '/common/css.css'); echo '<br />'; echo get_abs_url('http://www.baidu.com/blog/shuai/article/1.html?php=php#hello', './common/css.css'); echo '<br />'; echo get_abs_url('http://www.baidu.com/blog/shuai/article/1.html?php=php#hello', 'css.css');
評論(2)