美文网首页
2020-12-27

2020-12-27

作者: Linsonga | 来源:发表于2020-12-27 12:57 被阅读0次

---

<br>

#### **1. php如何校验IP地址**

filter_var() 函数

    通过指定的过滤器过滤一个变量。如果成功,则返回被过滤的数据。如果失败,则返回false。

FILTER_VALIDATE_IP过滤器

    过滤器把值作为ip地址来验证。

```

$ip = "192.168.0.1";

if (!filter_var($ip, FILTER_VALIDATE_IP)) {

    echo "IP is not valid";

} else {

    echo "IP is valid";

}

```

注:过滤器也可以校验邮箱,url,正则,布尔选项,字符,去除标签等。<a href="https://www.runoob.com/php/php-ref-filter.html">参考链接</a>

<br>

#### **2. 计算两个地址的相对路径**

```

$a = '/a/b/c/d/a.php';

$b = '/a/b/1/2/b.php';

```

```

$arr_a = explode('/', $a);

$arr_b = explode('/', $b);

$arr_diff = array_diff_assoc($arr_a, $arr_b);

//array_diff_assoc()用于获取A数组与B数组之间元素的差集,Key和Value都不相同视为不同元素,此处返回在A数组中且与B数组不相同的元素

$count = count($arr_diff);

$path = '';

for($i=0; $i<$count-1; $i++){

    $path .= '../';

}

$path .= implode('/', $arr_diff);

//implode()用于使用指定字符串连接数组元素,此处返回用'/'连接数组元素后的字符串

```

<br>

#### **3. 获取相邻两个值相同的个数**

```

$key = 0;

$a = [];

$arr = [1,1,1,0,1,1,0,1,1,1,1,1,1,1,1];

foreach($arr as $k =>$v) {

if($v == 1) {

$key++;

}

if($v == 0) {

array_push($a, $key);

$key = 0;

}

}

$pop = array_pop($arr);

if ($pop == 1) {

array_push($a, $key);

}

print_r($a);

```

<br>

#### **4. php中的自动加载**

PHP 5.2版本更新了自动加载需要的一个魔术方法 __autoload()

自动加载的原理,就是在我们 new 一个类的时候,php 系统如果找不到你这个类,就会去自动调用本文件中的 __autoload() 方法

项目中仅能有一个这样的 __autoload() 函数

spl_autoload_register() 需要不同的自动加载来加载不同路径的文件

<a href="https://www.cnblogs.com/cqingt/p/8080708.html">参考链接</a>

<br>

#### **5. 生成随机数**

```

function random($length, $numeric = 0) {

    PHP_VERSION < '4.2.0' ? mt_srand((double)microtime() * 1000000) : mt_srand();

    $seed = base_convert(md5(print_r($_SERVER, 1) . microtime()), 16, $numeric ? 10 : 35);

    $seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed));

    $hash = '';

    $max = strlen($seed) - 1;

    for ($i = 0; $i < $length; $i++) {

        $hash .= $seed[mt_rand(0, $max)];

    }

    return $hash;

}

```

<br>

#### **5. 冒泡排序**

其它排序参考链接:<a href="https://www.runoob.com/w3cnote/ten-sorting-algorithm.html">runoob 排序算法</a>

```

$arr = [36, 26, 8, 21, 6, 23, 1, 3, 16];

$count = count($arr);

for ($i = 0; $i < $count; $i++) {

        for ($k = $i + 1; $k < $count; $k++) {  // $arr[$i] 和 $arr[$k] 是相邻的两个值

            if ($arr[$i] > $arr[$k]) {    // 前者大于后者,调换位置。 如果想要按照从大到小进行排序,改为 $arr[$i] < $arr[$k]

                $temp = $arr[$i];

                $arr[$i] = $arr[$k];

                $arr[$k] = $temp;

            }

        }

    }

print_r($arr);

```

<br>

#### **5. 逻辑推演,根据5个已知条件,推断出正确密码**

<img src="https://blog-static.cnblogs.com/files/linsonga/%E6%B1%82%E5%AF%86%E7%A0%81.ico" style="width:400px">

<br>

#### **5. 逻辑推演,根据5个已知条件,推断出正确密码**

相关文章

网友评论

      本文标题:2020-12-27

      本文链接:https://www.haomeiwen.com/subject/yydonktx.html