php好用的方法

Posted 孤独的DNA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php好用的方法相关的知识,希望对你有一定的参考价值。

<?php

namespace app\\common\\library;
//非标准的base64类
class Base64

    private static $hashTable = \'aD1cOrFAx3HXejRYwG4o9*SPW5ZibBt6Csd2Q/Ek7Vu0NJ8ymThvKpULfMIgqlnz\';

    //$base64hash = \'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\';////标准base64算法

    /**
     * 编码
     * @param string $s 需要加密的字符串
     * @return string
     */
    public function encode($s)
    
        $base64hash = self::$hashTable;
        $i = 0;
        $prev = 0;
        $result = [];
        while ($i < ($s)) 
            $ascii = ($s[$i]);
            $mod = $i % 3;
            switch ($mod) 
                case 0: // 第一个6位只需要让8位二进制右移两位
                    $result[] = $base64hash[$ascii >> 2];
                    break;
                case 1://第二个6位 = 第一个8位的后两位 + 第二个8位的前4位
                    $result[] = $base64hash[($prev & 3) << 4 | ($ascii >> 4)];
                    break;
                case 2: //第三个6位 = 第二个8位的后4位 + 第三个8位的前2位 , 第4个6位 = 第三个8位的后6位
                    $result[] = $base64hash[($prev & 0x0f) << 2 | ($ascii >> 6)];
                    $result[] = $base64hash[$ascii & 0x3f];
                    break;
            
            $prev = $ascii;
            $i++;
        
        // 循环结束后看mod, 为0 证明需补3个6位,第一个为最后一个8位的最后两位后面补4个0。另外两个6位对应的是异常的“=”;
        // mod为1,证明还需补两个6位,一个是最后一个8位的后4位补两个0,另一个对应异常的“=”
        if ($mod == 0) 
            $result[] = $base64hash[($prev & 3) << 4];
            $result[] = \'==\';
         else if ($mod == 1) 
            $result[] = $base64hash[($prev & 0x0f) << 2];
            $result[] = \'=\';
        
        return (\'\', $result);
    

    /**
     * 解码
     * @param string $s 需要解密的字符串
     * @return string
     */
    public function decode($s)
    
        $s = ("/\\s|=/", \'\', $s);
        $base64hash = self::$hashTable;
        $i = 0;
        $prev = 0;
        $result = [];
        while ($i < ($s)) 
            $cur = ($base64hash, $s[$i]);
            $mod = $i % 4;

            switch ($mod) 
                case 0://TODO
                    break;
                case 1:
                    $result[] = ($prev << 2 | $cur >> 4);
                    break;
                case 2:
                    $result[] = (($prev & 0x0f) << 4 | $cur >> 2);
                    break;
                case 3:
                    $result[] = (($prev & 3) << 6 | $cur);
                    break;
            
            $prev = $cur;
            $i++;
        
        return (\'\', $result);
    

//计算2个坐标直接的距离

/*
 * 获取2个坐标直接的距离
 * */
function get_distance($lat1, $lng1, $lat2, $lng2)

    $earthRadius = 6367000; //地球半径m

    $lat1 = ($lat1 * () ) / 180;
    $lng1 = ($lng1 * () ) / 180;

    $lat2 = ($lat2 * () ) / 180;
    $lng2 = ($lng2 * () ) / 180;

    $calcLongitude = $lng2 - $lng1;
    $calcLatitude = $lat2 - $lat1;
    $stepOne = (($calcLatitude / 2), 2) + ($lat1) * ($lat2) * (($calcLongitude / 2), 2);
    $stepTwo = 2 * ((1, ($stepOne)));
    $calculatedDistance = $earthRadius * $stepTwo;

    return ($calculatedDistance);

 

以上是关于php好用的方法的主要内容,如果未能解决你的问题,请参考以下文章

CentOS yum 安装 PHP 5.6.24(附带安装GD库) 扩展安装好用安装好用方法

php rpc好用吗,有啥优缺点?php rpc框架哪个好?

PHP ThinkPHP 非常好用的增删改查方法

static 很好用 (php)

分享一款好用的PHP下ID混淆插件

PHP好用但又容易忽略的小知识