文章来源

1、中文截取:mb_substr()。

mb_substr(s t r , str,str,start,l e n g t h , length,length,encoding)
实例
echo mb_substr('这个真的很nice',0,3,'utf-8'); //输出这个真

2、英文截取:用substr()函数。如果截取的字符串是多个字节,就会出现乱码。

在utf8编码下,由于一个汉字占3个字节。

$str = 'hello';
echo substr($str,1,2);//输出el

3、$str[0],将字符串看做字符集合,中文不适用。

$str = 'hello';
echo $str[0];//输出h

php字符串的截取方式记录,方便以后忘记查询。

一、配置防火墙,开启80端口、3306端口

CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。

  1. 关闭firewall:

    systemctl stop firewalld.service #停止firewall
    systemctl disable firewalld.service #禁止firewall开机启动

  2. 安装iptables防火墙

    yum install iptables-services #安装
    vim /etc/sysconfig/iptables #编辑防火墙配置文件
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT IT网,http://www.it.net.cn
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    COMMIT
    :wq! #保存退出
    systemctl restart iptables.service #最后重启防火墙使配置生效
    systemctl enable iptables.service #设置防火墙开机启动

二、关闭SELINUX

vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效

目标

每天晚上12点备份网站所有文件和数据库,只保留最近5天的数据。
不做好数据备份,到时会死的很惨。

shell脚本

vim backup.sh

脚本内容

#!/bin/sh
#日期
rq=`date +%Y%m%d`
#我的备份目录是/apps/backup/,5是几天前的数据
find /apps/backup/ -name "*.sql" -mtime +5 |xargs rm -fr
find /apps/backup/ -name "*.tar.gz" -mtime +5 |xargs rm -fr
#需要先安装zip,yum install zip -y
zip -r /apps/backup/wordpress_koukou_$rq.tar.gz /apps/koukou/*
mysqldump -umysql用户名 -pmysql用户密码 -h 127.0.0.1  数据库名 > /apps/backup/koukou`date +%Y-%m-%d_%H%M%S`.sql

给脚本可执行权限

chmod 777 /backup.sh

计划任务

#我的脚本目录在/apps/backup/,每天凌晨23:59执行备份
59 23 * * * sh /apps/backup/backup.sh

<?php
use Carbon\CarbonPeriod;

$period = CarbonPeriod::create('2022-06-14', '2022-06-20');

// Iterate over the period
foreach ($period as $date) {
    echo $date->format('Y-m-d') ."\n";
}

//result
2022-06-14
2022-06-15
2022-06-16
2022-06-17
2022-06-18
2022-06-19
2022-06-20

//vue html渲染标签,绑定test方法
<div v-html="data" @click="test"></div>

//html渲染内容
//<button type="button" class="btn">按钮</button>

methods:{
    //隐藏内容事件
    test(event) {
        // console.log(event)
        if (event.target.className === 'btn') {
            //处理逻辑
            alert('yes');
        }
    }
}

<?php

$array = [
    [
        'title' => '标题5',
        'views' => 500
    ],
    [
        'title' => '标题3',
        'views' => 300
    ],
    [
        'title' => '标题2',
        'views' => 200
    ],
    [
        'title' => '标题4',
        'views' => 400
    ],
    [
        'title' => '标题1',
        'views' => 100
    ],
];

usort($array, function ($item1, $item2) {

    return $item1['views'] < $item2['views'];
});

print_r($array);
#result: 
Array
(
    [0] => Array
        (
            [title] => 标题5
            1,042 views => 500
        )

    [1] => Array
        (
            [title] => 标题4
            1,042 views => 400
        )

    [2] => Array
        (
            [title] => 标题3
            1,042 views => 300
        )

    [3] => Array
        (
            [title] => 标题2
            1,042 views => 200
        )

    [4] => Array
        (
            [title] => 标题1
            1,042 views => 100
        )

)

jQuery.validator.addMethod("check_user", function(value, element) {
    var check = /^[A-Za-z\s]+$/;
    //this.optional(element)如果元素为空并且不需要,则立即返回true。
    return this.optional(element) || (check.test(value));
}, '必须是大小写字母或者空格');

rules: {
    user: {
        required: true,
        maxlength: 15,
        check_user:true,//自定义验证规则
    },
}

文章来源 01号实验田

经常搞Linux的人都知道,Linux有很多发行版,比如:Ubuntu、Debian、Fedora、Arch Linux、openSUSE,不同版的软件源的定义方法是不一样的,我们知道,最近CentOS6已经停止更新支持,同时官方也把yum源删除了,目前CentOS 6系统使用yum命令安装软件包基本都是失败,我的执行搜索和安装软件包都是报错:[Errno 14] PYCURL ERROR 22,这是软件源失效的原因,因此需要更换yum源。

默认情况下,yum安装源位置是在/etc/yum.repos.d/这个文件夹下的,其中有多个配置文件,每一个配置文件中都可以配置一个或多个repository, 最终会被合并为一个交给系统。其实,上面的问题,用下面这个源就能解决
1。下载并更新新的yum源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://file.kangle.odata.cc/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://file.kangle.odata.cc/repo/epel-6.repo
2。重新生成metadata:
yum makecache

1.备份全部数据库

mysqldump -q -uroot -ppassword --add-drop-table --all-databases > /backup/all.sql

2.关闭mysql服务

// 不同服务器环境可能命令不一样, 以下仅供参考
service mysql stop  // centos7 以下 
systemctl stop mysql  // centos7 及以上

3.mysql 添加配置

// mysqld 配置下添加配置
[mysqld]
innodb_file_per_table=1

4.检测是否配置成功

// 首先启动mysql 
service mysql start  // centos7 以下 
systemctl start mysql  // centos7 及以上
// 查看配置
show variables like '%per_table%';
// 确认 innodb_file_per_table 的值为 ON 就配置好了

5.关闭mysql, 然后删除mysql目录下的 ibdata1 和 ib_logfile* 文件

// 关闭 mysql 参考步骤2
// mysql 目录可能会因安装方式或者其他原因在其他目录下, 默认目录参考: /var/lib/mysql

6.启动数据库, 最后导入第一步备份的数据库

// 启动数据库参考步骤3前面部分, 下面是导入备份的数据库
mysql -uroot -ppassword < /backup/all.sql

至此, 所有操作就完成了

文章转自:PHP笔记 - E度笔记

/**
 * 十进制数转换成62进制
 *
 * @param integer $num
 * @return string
 */
function to62($num) {
    $to = 62;
    $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $ret = '';
    do {
        $ret = $dict[bcmod($num, $to)] . $ret;
        $num = bcdiv($num, $to);
    } while ($num > 0);
    return $ret;
}
/**
 * 62进制数转换成十进制数
 *
 * @param string $num
 * @return string
 */
function from62($num) {
    $from = 62;
    $num = strval($num);
    $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $len = strlen($num);
    $dec = 0;
    for($i = 0; $i < $len; $i++) {
        $pos = strpos($dict, $num[$i]);
        $dec = bcadd(bcmul(bcpow($from, $len - $i - 1), $pos), $dec);
    }
    return $dec;
}
/**
 * 十进制数转换成其它进制
 * 可以转换成2-62任何进制
 *
 * @param integer $num
 * @param integer $to
 * @return string
 */
function dec_to($num, $to = 62) {
    if ($to == 10 || $to > 62 || $to < 2) {
        return $num;
    }
    $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $ret = '';
    do {
        $ret = $dict[bcmod($num, $to)] . $ret;
        $num = bcdiv($num, $to);
    } while ($num > 0);
    return $ret;
}
/**
 * 其它进制数转换成十进制数
 * 适用2-62的任何进制
 *
 * @param string $num
 * @param integer $from
 * @return number
 */
function dec_from($num, $from = 62) {
    if ($from == 10 || $from > 62 || $from < 2) {
        return $num;
    }
    $num = strval($num);
    $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $len = strlen($num);
    $dec = 0;
    for($i = 0; $i < $len; $i++) {
        $pos = strpos($dict, $num[$i]);
        if ($pos >= $from) {
            continue; // 如果出现非法字符,会忽略掉。比如16进制中出现w、x、y、z等
        }
        $dec = bcadd(bcmul(bcpow($from, $len - $i - 1), $pos), $dec);
    }
    return $dec;
}
/**
 * 当然,利用上面两个函数,可以进行任何进制之间相互转换:
 * 数字的任意进制转换
 *
 * @param integer|string $number
 * @param integer $to 目标进制数
 * @param integer $from 源进制数
 * @return string
 */
function radix($number, $to = 62, $from = 10) {
    // 先转换成10进制
    $number = dec_from($number, $from);
    // 再转换成目标进制
    $number = dec_to($number, $to);
    return $number;
}