分类 PHP 下的文章

1、thinkphp\library\think\Request.php

        public function method($method = false)
改为
    public function method($method = false)
    {
        if (true === $method) {
            // 获取原始请求类型
            return $this->server('REQUEST_METHOD') ?: 'GET';
        } elseif (!$this->method) {
            if (isset($_POST[Config::get('var_method')])) {
                $method = strtoupper($_POST[Config::get('var_method')]);
                if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {
                    $this->method = $method;
                    $this->{$this->method}($_POST);
                } else {
                    $this->method = 'POST';
                }
                unset($_POST[Config::get('var_method')]);
            } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) {
                $this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);
            } else {
                $this->method = $this->server('REQUEST_METHOD') ?: 'GET';
            }
        }
        return $this->method;
    }

2、thinkphp\library\think\App.php

public static function module(
        // 获取控制器名
        $controller = strip_tags($result[1] ?: $config['default_controller']);
改为
                // 获取控制器名
        $controller = strip_tags($result[1] ?: $config['default_controller']);

        if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
            throw new HttpException(404, 'controller not exists:' . $controller);
        }

3、thinkphp\library\think\Route.php

public static function parseUrl
                    // 解析控制器
              $controller = !empty($path) ? array_shift($path) : null;
          }
改为
                // 解析控制器
                $controller = !empty($path) ? array_shift($path) : null;
            }
            if ($controller && !preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
                throw new HttpException(404, 'controller not exists:' . $controller);
            }

public function pingyinFirstChar($sourcestr)
    {

        $returnstr = '';
        $i = 0;
        $n = 0;
        $str_length = strlen($sourcestr);//字符串的字节数

        while ($i <= $str_length) {

            $temp_str = substr($sourcestr, $i, 1);
            $ascnum = Ord($temp_str);//得到字符串中第$i位字符的ascii码

            if ($ascnum >= 224) { //如果ASCII位高与224,
                $returnstr = $returnstr . $this->getHanziInitial(substr($sourcestr, $i, 3)); //根据UTF-8编码规范,将3个连续的字符计为单个字符
                $i = $i + 3;//实际Byte计为3
            } else if ($ascnum >= 192) { //如果ASCII位高与192,
                $returnstr = $returnstr . $this->getHanziInitial(substr($sourcestr, $i, 2)); //根据UTF-8编码规范,将2个连续的字符计为单个字符
                $i = $i + 2;//实际Byte计为2
            } else if ($ascnum >= 65 && $ascnum <= 90) { //如果是大写字母,
                $returnstr = $returnstr . substr($sourcestr, $i, 1);
                $i = $i + 1;//实际的Byte数仍计1个
            } else { //其他情况下,包括小写字母和半角标点符号,
                $returnstr = $returnstr . strtoupper(substr($sourcestr, $i, 1)); //小写字母转换为大写
                $i = $i + 1;//实际的Byte数计1个
            }
        }

        return $returnstr;
    }

    public function getHanziInitial($s0)
    {

        if (ord($s0) >= "1" and ord($s0) <= ord("z")) {
            return strtoupper($s0);
        }
        $s = iconv("UTF-8", "gb2312//IGNORE", $s0); // 不要转换成GB2312内没有的字符哦,^_^
        // var_dump($s);exit;

        $asc = @ord($s[0]) * 256 + @ord($s[1]) - 65536;
        if ($asc >= -20319 and $asc <= -20284) return "A";
        if (in_array($asc, [])) return "A";
        if ($asc >= -20283 and $asc <= -19776) return "B";
        if (in_array($asc, [-8791, -5941])) return "B";
        if ($asc >= -19775 and $asc <= -19219) return "C";
        if (in_array($asc, [-4916])) return "C";
        if ($asc >= -19218 and $asc <= -18711) return "D";
        if (in_array($asc, [])) return "D";
        if ($asc >= -18710 and $asc <= -18527) return "E";
        if (in_array($asc, [])) return "E";
        if ($asc >= -18526 and $asc <= -18240) return "F";
        if (in_array($asc, [-6662])) return "F";
        if ($asc >= -18239 and $asc <= -17923) return "G";
        if (in_array($asc, [-8721, -2824, -5681])) return "G";
        if ($asc >= -17922 and $asc <= -17418) return "H";
        if (in_array($asc, [-8721])) return "H";
        if ($asc >= -17417 and $asc <= -16475) return "J";
        if (in_array($asc, [-5671, -8795, -65536, -8966, -8772, -6712])) return "J";
        if ($asc >= -16474 and $asc <= -16213) return "K";
        if (in_array($asc, [])) return "K";
        if ($asc >= -16212 and $asc <= -15641) return "L";
        if (in_array($asc, [-2069, -5715])) return "L";
        if ($asc >= -15640 and $asc <= -15166) return "M";
        if (in_array($asc, [-8786, -7512])) return "M";
        if ($asc >= -15165 and $asc <= -14923) return "N";
        if (in_array($asc, [])) return "N";
        if ($asc >= -14922 and $asc <= -14915) return "O";
        if (in_array($asc, [])) return "O";
        if ($asc >= -14914 and $asc <= -14631) return "P";
        if (in_array($asc, [-8718, -5951])) return "P";
        if ($asc >= -14630 and $asc <= -14150) return "Q";
        if (in_array($asc, [-2072, -8967])) return "Q";
        if ($asc >= -14149 and $asc <= -14091) return "R";
        if (in_array($asc, [])) return "R";
        if ($asc >= -14090 and $asc <= -13319) return "S";
        if (in_array($asc, [-8744, -8795])) return "S";
        if ($asc >= -13318 and $asc <= -12839) return "T";
        if (in_array($asc, [-8979])) return "T";
        if ($asc >= -12838 and $asc <= -12557) return "W";
        if (in_array($asc, [-8789])) return "W";
        if (in_array($asc, [-4869, -9016, -8529])) return "X";
        if ($asc >= -12556 and $asc <= -11848) return "X";
        if ($asc >= -11847 and $asc <= -11056) return "Y";
        if (in_array($asc, [-5930, -5159])) return "Y";
        if ($asc >= -11055 and $asc <= -10247) return "Z";
        if (in_array($asc, [-5717])) return "Z";
        return 'a'; //$s0 是 返回原字符,不作转换。(标点、空格、繁体字都会直接返回)
    }