yii\web\Request::resolvePathInfo PHP Method

resolvePathInfo() protected method

A path info refers to the part that is after the entry script and before the question mark (query string). The starting slashes are both removed (ending slashes will be kept).
protected resolvePathInfo ( ) : string
return string part of the request URL that is after the entry script and before the question mark. Note, the returned path info is decoded.
    protected function resolvePathInfo()
    {
        $pathInfo = $this->getUrl();
        if (($pos = strpos($pathInfo, '?')) !== false) {
            $pathInfo = substr($pathInfo, 0, $pos);
        }
        $pathInfo = urldecode($pathInfo);
        // try to encode in UTF8 if not so
        // http://w3.org/International/questions/qa-forms-utf-8.html
        if (!preg_match('%^(?:
            [\\x09\\x0A\\x0D\\x20-\\x7E]              # ASCII
            | [\\xC2-\\xDF][\\x80-\\xBF]             # non-overlong 2-byte
            | \\xE0[\\xA0-\\xBF][\\x80-\\xBF]         # excluding overlongs
            | [\\xE1-\\xEC\\xEE\\xEF][\\x80-\\xBF]{2}  # straight 3-byte
            | \\xED[\\x80-\\x9F][\\x80-\\xBF]         # excluding surrogates
            | \\xF0[\\x90-\\xBF][\\x80-\\xBF]{2}      # planes 1-3
            | [\\xF1-\\xF3][\\x80-\\xBF]{3}          # planes 4-15
            | \\xF4[\\x80-\\x8F][\\x80-\\xBF]{2}      # plane 16
            )*$%xs', $pathInfo)) {
            $pathInfo = utf8_encode($pathInfo);
        }
        $scriptUrl = $this->getScriptUrl();
        $baseUrl = $this->getBaseUrl();
        if (strpos($pathInfo, $scriptUrl) === 0) {
            $pathInfo = substr($pathInfo, strlen($scriptUrl));
        } elseif ($baseUrl === '' || strpos($pathInfo, $baseUrl) === 0) {
            $pathInfo = substr($pathInfo, strlen($baseUrl));
        } elseif (isset($_SERVER['PHP_SELF']) && strpos($_SERVER['PHP_SELF'], $scriptUrl) === 0) {
            $pathInfo = substr($_SERVER['PHP_SELF'], strlen($scriptUrl));
        } else {
            throw new InvalidConfigException('Unable to determine the path info of the current request.');
        }
        if (substr($pathInfo, 0, 1) === '/') {
            $pathInfo = substr($pathInfo, 1);
        }
        return (string) $pathInfo;
    }

Usage Example

Example #1
0
 public function resolvePathInfo()
 {
     if ($this->getUrl() === $this->adminUrl) {
         return "";
     } else {
         return parent::resolvePathInfo();
     }
 }
All Usage Examples Of yii\web\Request::resolvePathInfo