/**
 * 将url转换为标准的pathinfo类型的url
 * @param $url
 * @return string
 */
function url($url)
{
    $_url = \herosphp\http\HttpRequest::url2Target($url);
    if ($_url != $url) {
        return $_url;
    }
    $webApp = \herosphp\core\WebApplication::getInstance();
    $sysConfig = $webApp->getConfigs();
    $defaultUrl = $sysConfig['default_url'];
    $actionMap = array();
    $args = '';
    $urlInfo = parse_url($url);
    if ($urlInfo['path']) {
        $filename = str_replace(EXT_URI, '', $urlInfo['path']);
        $pathInfo = explode('/', $filename);
        if (isset($pathInfo[1])) {
            $actionMap = explode('_', $pathInfo[1]);
        }
        //提取参数
        if (isset($pathInfo[2])) {
            $args .= $pathInfo[2];
        }
        if ($urlInfo['query']) {
            $query = preg_replace('/[&|=]/', '-', $urlInfo['query']);
            if ($query) {
                $args .= $args == '' ? $query : '-' . $query;
            }
        }
    }
    //如果没有任何参数,则访问默认页面。如http://www.herosphp.my这种格式
    if (!$actionMap[0]) {
        $actionMap[0] = $defaultUrl['module'];
    }
    if (!$actionMap[1]) {
        $actionMap[1] = $defaultUrl['action'];
    }
    if (!$actionMap[2]) {
        $actionMap[2] = $defaultUrl['method'];
    }
    $newUrl = '/' . implode('_', $actionMap);
    if (trim($args) != '') {
        $newUrl .= '/' . $args;
    }
    $newUrl .= EXT_URI;
    return $newUrl;
}
Example #2
0
/**
 * 将url转换为标准的pathinfo类型的url
 * @param $url
 * @return string
 */
function url($url)
{
    $_url = \herosphp\http\HttpRequest::url2Target($url);
    if ($_url != $url) {
        $_url = rtrim($_url, '/');
        return $_url;
    }
    $webApp = \herosphp\core\WebApplication::getInstance();
    $sysConfig = $webApp->getConfigs();
    $defaultUrl = $sysConfig['default_url'];
    $actionMap = array();
    $args = '';
    $urlInfo = parse_url($url);
    if ($urlInfo['path'] && $urlInfo['path'] != '/') {
        $filename = str_replace(EXT_URI, '', $urlInfo['path']);
        $filename = rtrim($filename, "/");
        $pathInfo = explode('/', $filename);
        array_shift($pathInfo);
        //提取pathinfo参数
        $paramArr = array();
        if (count($pathInfo) > 3) {
            if (isset($pathInfo[3])) {
                $params = explode('-', $pathInfo[3]);
                for ($i = 0; $i < count($params); $i++) {
                    if ($i % 2 == 0) {
                        if (trim($params[$i]) == '' || trim($params[$i + 1]) == '' || strpos($params[$i], '=') != false) {
                            continue;
                        }
                        $paramArr[] = $params[$i];
                        $paramArr[] = $params[$i + 1];
                    }
                }
            }
        }
        if ($urlInfo['query']) {
            $query = preg_replace('/[&|=]/', '-', $urlInfo['query']);
            if ($query) {
                $args .= $args == '' ? $query : '-' . $query;
            }
        }
    }
    //如果没有任何参数,则访问默认页面。如http://www.herosphp.my这种格式
    if (!$actionMap[0]) {
        $actionMap[0] = $defaultUrl['module'];
    }
    if (!$actionMap[1]) {
        $actionMap[1] = $defaultUrl['action'];
    }
    if (!$actionMap[2]) {
        $actionMap[2] = $defaultUrl['method'];
    }
    $newUrl = '/' . implode('/', $actionMap);
    if (!empty($paramArr)) {
        $newUrl .= '/' . implode('-', $paramArr);
    }
    if (trim($args) != '') {
        $newUrl .= '/' . $args;
    }
    $newUrl .= EXT_URI;
    $newUrl = rtrim($newUrl, '/');
    return $newUrl;
}