Exemplo n.º 1
0
function U($url, $params = false, $redirect = false, $suffix = true)
{
    // 普通模式
    if (false === strpos($url, '/')) {
        $url .= '//';
    }
    // 填充默认参数
    $urls = explode('/', $url);
    $app = $urls[0] ? $urls[0] : APP_NAME;
    $mod = $urls[1] ? $urls[1] : 'Index';
    $act = $urls[2] ? $urls[2] : 'index';
    // 组合默认路径
    $site_url = SITE_URL . '/index.php?app=' . $app . '&mod=' . $mod . '&act=' . $act;
    // 填充附加参数
    if ($params) {
        if (is_array($params)) {
            $params = http_build_query($params);
            $params = urldecode($params);
        }
        $params = str_replace('&', '&', $params);
        $site_url .= '&' . $params;
    }
    // 开启路由和Rewrite
    $_config = getPublicConfig();
    if ($_config['URL_ROUTER_ON']) {
        // 载入路由
        static $router_ruler = array();
        if (empty($router_ruler)) {
            $router_ruler = (include SITE_ROOT . '/router.inc.php');
            $router_ruler = $router_ruler['router'];
        }
        $router_key = $app . '/' . ucfirst($mod) . '/' . $act;
        //路由命中
        if (isset($router_ruler[$router_key])) {
            //填充路由参数
            $site_url = SITE_URL . '/' . $router_ruler[$router_key];
            //填充附加参数
            if ($params) {
                // 解析替换URL中的参数
                parse_str($params, $r);
                foreach ($r as $k => $v) {
                    if (strpos($site_url, '[' . $k . ']')) {
                        $site_url = str_replace('[' . $k . ']', $v, $site_url);
                    } else {
                        $lr[$k] = $v;
                    }
                }
                // 填充剩余参数
                if (is_array($lr) && count($lr) > 0) {
                    $site_url .= '?' . http_build_query($lr);
                }
            }
            // 去除URL中无替换的参数
            $site_url = preg_replace('/\\/\\[(.+?)\\]/i', '', $site_url);
        }
    }
    // 输出地址或跳转
    if ($redirect) {
        redirect($site_url);
    } else {
        return $site_url;
    }
}
Exemplo n.º 2
0
function getDbPrefix()
{
    static $_prefix = '';
    if (empty($_prefix)) {
        $_prefix = getPublicConfig();
        $_prefix = $_prefix['DB_PREFIX'];
    }
    return $_prefix;
}