遍历数组的方式:
1.定义循环数组
$arr = array('website'=>'http://www.poluoluo.com','webname'=>'脚本之家')
while(list($k,$v) = each($arr)){
echo $k.'=>'.$v.'<br />';
}
2.定义数组
$arr = array('http://www.poluoluo.com','脚本之家','PHP教程');
foreach($arr as $k=>$v){
echo $k."=>".$v."<br />";
}
3.定义数组
$arr = array('http://www.poluoluo.com','脚本之家','PHP教程');
foreach($arr as $value){
echo $value.'<br />';
}
4.for 循环
arr = array('http://www.poluoluo.com','脚本之家','PHP教程');
$num = count($arr);
for($i=0;$i<$num;++$i){
echo $arr[$i].'<br />';
}
公密钥的获取方式:
windows:
1: 首先检查php.ini中;extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘;', 如果不存在这行,那么添加extension=php_openssl.dll。
2: 讲php文件夹下的: php_openssl.dll, ssleay32.dll, libeay32.dll 3个文件拷贝到 WINDOWS\system32\ 文件夹下。
3: 重启apache
linux:
# 下载到/var/www/php5目录下
cd /var/www/php5
wget http://mirrors.sohu.com/php/php-5.2.14.tar.gz
# 解压
tar zxvf php-5.2.14.tar.gz
# 进入PHP的openssl扩展模块目录
cd php-5.2.14/ext/openssl/
/var/www/php5/bin/phpize # 这里为你自己的phpize路径,如果找不到,使用whereis phpize查找
# 执行后,发现错误 无法找到config.m4 ,config0.m4就是config.m4。直接重命名
mv config0.m4 config.m4
/var/www/php5/bin/phpize
./configure --with-openssl --with-php-config=/var/www/php5/bin/php-config
make
make install
# 安装完成后,会返回一个.so文件(openssl.so)的目录。在此目录下把openssl.so 文件拷贝到你在php.ini 中指定的 extension_dir 下(在php.ini文件中查找:extension_dir =),我这里的目录是 var/www/php5/lib/php/extensions
# 编辑php.ini文件,在文件最后添加
extension=openssl.so
# 重启Apache即可
/usr/local/apache2/bin/apachectl restart
php编码转换iconv
$data = "I love";
$newData = iconv(mb_detect_encoding($data),'GBK',$data);
app 接口封装(json)
class Response{
/**
*按json方式输出通信数据
*@param string $code 状态码
*@param string $massage 提示信息
*@param array $data 数据
*return string
*/
public static function json($code,$message='',$data=array()){
if(!is_numeric($code)){
return '';
}
$result = array(
'code' => $code,
'message'=>$message,
'data'=>$data
);
echo json_encode($result);
exit;
}
public static function xml(){
header("Content-Type:text/xml");
$xml="<?xml vesion='1.0' encoding='utf-8'?>\n";
$xml.="<root>\n";
$xml.="<code>200</code>\n";
$xml.="<message>数据返回成功</message>\n";
$xml.="<data>\n";
$xml.="<id>200</id>\n";
$xml.="<name>haiming</name>\n";
$xml.="</data>\n";
$xml.="</root>";
echo $xml;
}
public static function xmlEncode($code,$message,$data=array()){
if(!is_numeric($code)){
return'';
}
$result = array(
'code'=>$code,
'message'=>$message,
'data'=>$data,
);
header("Content-Type:text/xml);
$xml ="<?xml version ='1.0' encoding='UTF-8'?>\n";
$xml.="<root>\n";
$xml.=self::xmlToEncode($result);
$xml.="</root>";
echo $xml;
}
public static function xmlToEncode($data){
$xml = '';
foreach($data as $key=>$value){
$xml.="<{$key}>";
$xml.=is_array($value)?self::xmlToEncode($value):$value;
$xml.="</{$key}>\n";
}
return $xml;
}
}
$data = array(
'id'=>1,
'name'=>'haiming'
);
Response::xmlEncode(200,'success',$data);
require_once('./response.php');
$arr = array(
'id'=>1,
'name'=>'haiming'
);
Response::json(200,'数据返回成功',$arr);
linux定时任务crontab例子
*/1 **** php /data/www/cron.php 意思是每分钟执行cron.php
50 7 *** /sbin/server sshd start 意思是每天7:50开启ssh服务
linux运行php文件 /user/bin/php
linux tar -tzvf test.tar.gz demo.php //压缩文件
linux tar -tzvf test.tar.gz //列出压缩文件内容
linux tar -xzvf test.tar.gz demo.php //解压文件
.zip格式压缩
zip 压缩文件名 源文件
zip -r 压缩目录名 源目录
unzip 解压缩
.gzip格式压缩
gizp 源文件
gzip -c 源文件 > 压缩文件
gzip -r (压缩目录下的所有子文件,但不压缩目录)
.bzip2格式压缩
bzip2 源文件 (不保留源文件)
bzip2 -k 源文件 (保留源文件) *bzip2命令不能压缩目录
.tar.gz格式压缩
直接压缩 tar -zcvf jp.tar.gz jp 把jp压缩成jp.tar.gz
直接解压缩 tar -zxvf jp.gz 把jp.tar.gz解压成jp
直接压缩 tar -jcvf jp.tar.bz2 jp 把jp压缩成jp.tar.bz2
直接解压到指定位置 tar -jxvf jp.tar.bz2 -C/tmp/
挂载命令 mount
设置别名alias 如果是命令临时生效 alias vi='vim' 如果是文件永久生效 vi /roo/.bashrc 必须重启系统才能生效
删除别名unalias
常用快捷键 ctrl+c 强制终止当前命令 ctrl+l 清屏 ctrl+a 光标移动到命令行首
ctrl+e 光标移动到命令行尾 ctrl+u 从光标所在位置删除到行首 ctrl+z 把命令放入后台
ctrl+r 在历史命令中搜索 cat 查看文件 history历史命令 history -c 清空历史命令
netstat -an | grep ESTABLISHED | wc -1 查看当前服务器的登录个数
命令 ls -l(长格式显示)
ls -h(人性化显示文件大小)
ls -a(显示所有文件,包括隐藏文件)
ls -d(查看目录属性)
ls -i(显示inode)
mkdir(创建目录) -p(递归创建) quit(退出) touch(递归创建目录)
ctrl+l(清屏) cd 和cd ~ (进入当前用户的家目录) cd - (进入上次目录) cd .. (进入上一级目录) cd . (进入当前目录)
rm (删文件) rm -r (删除目录) rm -rf(递归强制删除目录)
cp (复制文件) cp -r (复制目录) cp -p (递归复制目录) cp -a (复制源文件一模一样的) mv (剪切或改名)
文件搜索命令locate (在后台搜索,搜索速度慢)
命令搜索命令whereis与which whereis(系统命令所在位置) whoami(我是谁) whatis (干生么的)
文件搜索命令find(整个文件里去搜索) find . size 25k(搜索等于25KM的文件,其中-25k是小于25KM的文件,+25k大于25KM的文件) find . -inum 262422 (查找i节点是262422的文件)
字符串搜索命令grep
linux 硬盘分区表MBR分区(主分区不超过4个;单个分区容量最大2TB) (工具 fdisk)
硬盘分区表GPT分区(主分区个数几乎没有限制;单个分区容量几乎没有限制) (工具 parted)
1EB = 1024PB 1PB = 1024TB 1TB = 1024GB
parted 可以用MBR分区 指定分区表类型命令 mklabel msdos
可以用GPT分区 指定分区表类型命令 mklabel gpt
查看分区表类型 print
parted分区分为交互模式和命令模式
交互模式:添加分区命令(mkpart) (设置分区名称和类型大小)
命令模式:添加分区命令(mkpart test 2000 3000)
删除分区(rm 分区序号)
设置分区单位 (unit GB)
磁盘分区格式化命令:(mkfs)例如:(mkfs.ext3 /dev/sdb1) 把sdb1格式化成了ext3
(mkfs -t ext4 /dev/sdb2) 把sdb2格式化成了ext4
挂载 :必须挂载到存在的文件夹中
建文件夹:mkdir -p /mnt/test
挂载命令(mount /dev/sdb1 /mnt/test)
卸载命令(umount /mnt/test)
系统重启想执行自动挂载必须编辑etc/fstab (vim + etc/fstab)
在fstab中加配置:
/dev/sdb1 /mnt/test ext3 defaults
修改分区(t)->选择分区(通过分区编号)->选择16进制编码(用L查看)
格式化交换分区:mkswap /dev/sdb3
启用交换分区:swapon /dev/sdb3
查看交换分区:free
关闭交换分区:swapoff /dev/sdb3
用户组:添加一个用户组:groupadd shichaobu
修改用户组名:groupmod -n market shichaobu
修改用户组编号:groupmod -g 668 market
添加一个用户组指定编号:groupadd -g 888 boss
删除一个用户组:groupdel market
查看服务是否安装:chkconfig --list | grep atd
查看是否运行:service atd status
查看服务是否安装:chkconfig --list | grep cron
查看是否运行:service atd status
正则表达式
. 匹配除换行符意外的任意字符 [x] 匹配x字符,如匹配字符串的a、b和c字符
\w 匹配字母或数字或下划线 \W 匹配任意非字母,数字,下划线和汉字的字符
\s 匹配任意的空白字符 \S 匹配任意非空白的字符
\d 匹配数字 \D 匹配任意非数字的字符
\b 匹配单词的开始或结束 \B 匹配不是单词开头或结束的位置
^ 匹配字符串的开始 [^x] 匹配除了x意外的任意字符
$ 匹配字符串的结束
验证账号,字母开头,允许 5-16 字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
验证账号,不能为空,不能有空格,只能是英文字母:^\S+[a-z A-Z]$
验证账号,不能有空格,不能非数字:^\d+$
验证用户密码,以字母开头,长度在 6-18 之间:^[a-zA-Z]\w{5,17}$
验证是否含有 ^%&',;=?$\ 等字符:[^%&',;=?$\x22]+
匹配Email地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配腾讯QQ号:[1-9][0-9]{4,}
匹配日期,只能是 2004-10-22 格式:^\d{4}\-\d{1,2}-\d{1,2}$
匹配国内电话号码:^\d{3}-\d{8}|\d{4}-\d{7,8}$
评注:匹配形式如 010-12345678 或 0571-12345678 或 0831-1234567
匹配中国邮政编码:^[1-9]\d{5}(?!\d)$
匹配身份证:\d{14}(\d{4}|(\d{3}[xX])|\d{1})
评注:中国的身份证为 15 位或 18 位
不能为空且二十字节以上:^[\s|\S]{20,}$
字符匹配
匹配由 26 个英文字母组成的字符串:^[A-Za-z]+$
匹配由 26 个大写英文字母组成的字符串:^[A-Z]+$
匹配由 26 个小写英文字母组成的字符串:^[a-z]+$
匹配由数字和 26 个英文字母组成的字符串:^[A-Za-z0-9]+$
匹配由数字、26个英文字母或者下划线组成的字符串:^\w+$
匹配空行:\n[\s| ]*\r
匹配任何内容:[\s\S]*
匹配中文字符:[\x80-\xff]+ 或者 [\xa1-\xff]+
只能输入汉字:^[\x80-\xff],{0,}$
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配数字
只能输入数字:^[0-9]*$
只能输入n位的数字:^\d{n}$
只能输入至少n位数字:^\d{n,}$
只能输入m-n位的数字:^\d{m,n}$
匹配正整数:^[1-9]\d*$
匹配负整数:^-[1-9]\d*$
匹配整数:^-?[1-9]\d*$
匹配非负整数(正整数 + 0):^[1-9]\d*|0$
匹配非正整数(负整数 + 0):^-[1-9]\d*|0$
匹配正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
匹配负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
匹配浮点数:^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
匹配非负浮点数(正浮点数 + 0):^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
匹配非正浮点数(负浮点数 + 0):^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
其他
匹配HTML标记的正则表达式(无法匹配嵌套标签):<(\S*?)[^>]*>.*?</\1>|<.*? />
匹配网址 URL :[a-zA-z]+://[^\s]*
匹配 IP 地址:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
匹配完整域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
1. ps 链接: https://pan.baidu.com/s/1i5oUJbv 密码: 9qjc
2.html5 + css3 链接: https://pan.baidu.com/s/1dFen9uD 密码: h636
3.javasript 链接: https://pan.baidu.com/s/1o76Lpv8 密码: m3cq
4.jquery 链接: https://pan.baidu.com/s/1bQg6Ii 密码: w7wv
5 bootstrap 链接: https://pan.baidu.com/s/1hsQQ1Ys 密码: wgsr
6. vue.js 链接: 链接: https://pan.baidu.com/s/1mhMywNQ 密码: vprt
7. Angular.js 链接: https://pan.baidu.com/s/1skCKMIT 密码: vxhs
8.node.js 链接: https://pan.baidu.com/s/1dERwwcp 密码: 9vsq
9.webpack 链接: https://pan.baidu.com/s/1jIKGNH0 密码: xs4f
10. Backbone 链接: https://pan.baidu.com/s/1dE7dAxz 密码: 863y
11. KnockOut 链接: https://pan.baidu.com/s/1o8Bfpjk 密码: 7bya
12.ECMAScript6 链接: https://pan.baidu.com/s/1skKSrCh 密码: 2esg
13. meteor 链接: https://pan.baidu.com/s/1pKIU48V 密码: 7jis
14 php 基础.链接: https://pan.baidu.com/s/1mhZp8YO 密码: 7xqv
15.mysql数据库 链接: https://pan.baidu.com/s/1dE3FMKD 密码: dgdc
16.memcached缓存优化 链接: https://pan.baidu.com/s/1o7U1RLK 密码: brfi
17. ThinkPHP 链接: https://pan.baidu.com/s/1qYfTbHi 密码: f7k6
18. Yil 链接: https://pan.baidu.com/s/1jIMcJhc 密码: rhv2
19 smarty 链接: https://pan.baidu.com/s/1c1OaEJ2 密码: 8jxq
Mysql 优化:
1 , 为查询缓存优化查询语句
2 , Explain 查看select语句
3 , 当只要一行数据时 , 用limit1
4 , 为搜索条件字段建立索引
5 , join查询的时候 , on关联的字段最好同类型
6 , 不要order by rand() , 打乱返回结果集
7 , 避免select *
8 , 为每张表都设置主键自增unsigned id
9 , 使用定长而不是边长 , 定长表就是static的
10 , 避免字段为null
11 , 可使用无缓冲字段mysql_unbuffered_query() , 每次执行就返回结果 , 不用等全部执行完
12 , 特定字段 , 特定存 , 比如ip varchar(12)可用int(32)
13 , 拆分大的delete和insert , 会锁表 , 影响其他进程堆积操作
1.定义循环数组
$arr = array('website'=>'http://www.poluoluo.com','webname'=>'脚本之家')
while(list($k,$v) = each($arr)){
echo $k.'=>'.$v.'<br />';
}
2.定义数组
$arr = array('http://www.poluoluo.com','脚本之家','PHP教程');
foreach($arr as $k=>$v){
echo $k."=>".$v."<br />";
}
3.定义数组
$arr = array('http://www.poluoluo.com','脚本之家','PHP教程');
foreach($arr as $value){
echo $value.'<br />';
}
4.for 循环
arr = array('http://www.poluoluo.com','脚本之家','PHP教程');
$num = count($arr);
for($i=0;$i<$num;++$i){
echo $arr[$i].'<br />';
}
公密钥的获取方式:
windows:
1: 首先检查php.ini中;extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘;', 如果不存在这行,那么添加extension=php_openssl.dll。
2: 讲php文件夹下的: php_openssl.dll, ssleay32.dll, libeay32.dll 3个文件拷贝到 WINDOWS\system32\ 文件夹下。
3: 重启apache
linux:
# 下载到/var/www/php5目录下
cd /var/www/php5
wget http://mirrors.sohu.com/php/php-5.2.14.tar.gz
# 解压
tar zxvf php-5.2.14.tar.gz
# 进入PHP的openssl扩展模块目录
cd php-5.2.14/ext/openssl/
/var/www/php5/bin/phpize # 这里为你自己的phpize路径,如果找不到,使用whereis phpize查找
# 执行后,发现错误 无法找到config.m4 ,config0.m4就是config.m4。直接重命名
mv config0.m4 config.m4
/var/www/php5/bin/phpize
./configure --with-openssl --with-php-config=/var/www/php5/bin/php-config
make
make install
# 安装完成后,会返回一个.so文件(openssl.so)的目录。在此目录下把openssl.so 文件拷贝到你在php.ini 中指定的 extension_dir 下(在php.ini文件中查找:extension_dir =),我这里的目录是 var/www/php5/lib/php/extensions
# 编辑php.ini文件,在文件最后添加
extension=openssl.so
# 重启Apache即可
/usr/local/apache2/bin/apachectl restart
php编码转换iconv
$data = "I love";
$newData = iconv(mb_detect_encoding($data),'GBK',$data);
app 接口封装(json)
class Response{
/**
*按json方式输出通信数据
*@param string $code 状态码
*@param string $massage 提示信息
*@param array $data 数据
*return string
*/
public static function json($code,$message='',$data=array()){
if(!is_numeric($code)){
return '';
}
$result = array(
'code' => $code,
'message'=>$message,
'data'=>$data
);
echo json_encode($result);
exit;
}
public static function xml(){
header("Content-Type:text/xml");
$xml="<?xml vesion='1.0' encoding='utf-8'?>\n";
$xml.="<root>\n";
$xml.="<code>200</code>\n";
$xml.="<message>数据返回成功</message>\n";
$xml.="<data>\n";
$xml.="<id>200</id>\n";
$xml.="<name>haiming</name>\n";
$xml.="</data>\n";
$xml.="</root>";
echo $xml;
}
public static function xmlEncode($code,$message,$data=array()){
if(!is_numeric($code)){
return'';
}
$result = array(
'code'=>$code,
'message'=>$message,
'data'=>$data,
);
header("Content-Type:text/xml);
$xml ="<?xml version ='1.0' encoding='UTF-8'?>\n";
$xml.="<root>\n";
$xml.=self::xmlToEncode($result);
$xml.="</root>";
echo $xml;
}
public static function xmlToEncode($data){
$xml = '';
foreach($data as $key=>$value){
$xml.="<{$key}>";
$xml.=is_array($value)?self::xmlToEncode($value):$value;
$xml.="</{$key}>\n";
}
return $xml;
}
}
$data = array(
'id'=>1,
'name'=>'haiming'
);
Response::xmlEncode(200,'success',$data);
require_once('./response.php');
$arr = array(
'id'=>1,
'name'=>'haiming'
);
Response::json(200,'数据返回成功',$arr);
linux定时任务crontab例子
*/1 **** php /data/www/cron.php 意思是每分钟执行cron.php
50 7 *** /sbin/server sshd start 意思是每天7:50开启ssh服务
linux运行php文件 /user/bin/php
linux tar -tzvf test.tar.gz demo.php //压缩文件
linux tar -tzvf test.tar.gz //列出压缩文件内容
linux tar -xzvf test.tar.gz demo.php //解压文件
.zip格式压缩
zip 压缩文件名 源文件
zip -r 压缩目录名 源目录
unzip 解压缩
.gzip格式压缩
gizp 源文件
gzip -c 源文件 > 压缩文件
gzip -r (压缩目录下的所有子文件,但不压缩目录)
.bzip2格式压缩
bzip2 源文件 (不保留源文件)
bzip2 -k 源文件 (保留源文件) *bzip2命令不能压缩目录
.tar.gz格式压缩
直接压缩 tar -zcvf jp.tar.gz jp 把jp压缩成jp.tar.gz
直接解压缩 tar -zxvf jp.gz 把jp.tar.gz解压成jp
直接压缩 tar -jcvf jp.tar.bz2 jp 把jp压缩成jp.tar.bz2
直接解压到指定位置 tar -jxvf jp.tar.bz2 -C/tmp/
挂载命令 mount
设置别名alias 如果是命令临时生效 alias vi='vim' 如果是文件永久生效 vi /roo/.bashrc 必须重启系统才能生效
删除别名unalias
常用快捷键 ctrl+c 强制终止当前命令 ctrl+l 清屏 ctrl+a 光标移动到命令行首
ctrl+e 光标移动到命令行尾 ctrl+u 从光标所在位置删除到行首 ctrl+z 把命令放入后台
ctrl+r 在历史命令中搜索 cat 查看文件 history历史命令 history -c 清空历史命令
netstat -an | grep ESTABLISHED | wc -1 查看当前服务器的登录个数
命令 ls -l(长格式显示)
ls -h(人性化显示文件大小)
ls -a(显示所有文件,包括隐藏文件)
ls -d(查看目录属性)
ls -i(显示inode)
mkdir(创建目录) -p(递归创建) quit(退出) touch(递归创建目录)
ctrl+l(清屏) cd 和cd ~ (进入当前用户的家目录) cd - (进入上次目录) cd .. (进入上一级目录) cd . (进入当前目录)
rm (删文件) rm -r (删除目录) rm -rf(递归强制删除目录)
cp (复制文件) cp -r (复制目录) cp -p (递归复制目录) cp -a (复制源文件一模一样的) mv (剪切或改名)
文件搜索命令locate (在后台搜索,搜索速度慢)
命令搜索命令whereis与which whereis(系统命令所在位置) whoami(我是谁) whatis (干生么的)
文件搜索命令find(整个文件里去搜索) find . size 25k(搜索等于25KM的文件,其中-25k是小于25KM的文件,+25k大于25KM的文件) find . -inum 262422 (查找i节点是262422的文件)
字符串搜索命令grep
linux 硬盘分区表MBR分区(主分区不超过4个;单个分区容量最大2TB) (工具 fdisk)
硬盘分区表GPT分区(主分区个数几乎没有限制;单个分区容量几乎没有限制) (工具 parted)
1EB = 1024PB 1PB = 1024TB 1TB = 1024GB
parted 可以用MBR分区 指定分区表类型命令 mklabel msdos
可以用GPT分区 指定分区表类型命令 mklabel gpt
查看分区表类型 print
parted分区分为交互模式和命令模式
交互模式:添加分区命令(mkpart) (设置分区名称和类型大小)
命令模式:添加分区命令(mkpart test 2000 3000)
删除分区(rm 分区序号)
设置分区单位 (unit GB)
磁盘分区格式化命令:(mkfs)例如:(mkfs.ext3 /dev/sdb1) 把sdb1格式化成了ext3
(mkfs -t ext4 /dev/sdb2) 把sdb2格式化成了ext4
挂载 :必须挂载到存在的文件夹中
建文件夹:mkdir -p /mnt/test
挂载命令(mount /dev/sdb1 /mnt/test)
卸载命令(umount /mnt/test)
系统重启想执行自动挂载必须编辑etc/fstab (vim + etc/fstab)
在fstab中加配置:
/dev/sdb1 /mnt/test ext3 defaults
修改分区(t)->选择分区(通过分区编号)->选择16进制编码(用L查看)
格式化交换分区:mkswap /dev/sdb3
启用交换分区:swapon /dev/sdb3
查看交换分区:free
关闭交换分区:swapoff /dev/sdb3
用户组:添加一个用户组:groupadd shichaobu
修改用户组名:groupmod -n market shichaobu
修改用户组编号:groupmod -g 668 market
添加一个用户组指定编号:groupadd -g 888 boss
删除一个用户组:groupdel market
查看服务是否安装:chkconfig --list | grep atd
查看是否运行:service atd status
查看服务是否安装:chkconfig --list | grep cron
查看是否运行:service atd status
正则表达式
. 匹配除换行符意外的任意字符 [x] 匹配x字符,如匹配字符串的a、b和c字符
\w 匹配字母或数字或下划线 \W 匹配任意非字母,数字,下划线和汉字的字符
\s 匹配任意的空白字符 \S 匹配任意非空白的字符
\d 匹配数字 \D 匹配任意非数字的字符
\b 匹配单词的开始或结束 \B 匹配不是单词开头或结束的位置
^ 匹配字符串的开始 [^x] 匹配除了x意外的任意字符
$ 匹配字符串的结束
验证账号,字母开头,允许 5-16 字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
验证账号,不能为空,不能有空格,只能是英文字母:^\S+[a-z A-Z]$
验证账号,不能有空格,不能非数字:^\d+$
验证用户密码,以字母开头,长度在 6-18 之间:^[a-zA-Z]\w{5,17}$
验证是否含有 ^%&',;=?$\ 等字符:[^%&',;=?$\x22]+
匹配Email地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配腾讯QQ号:[1-9][0-9]{4,}
匹配日期,只能是 2004-10-22 格式:^\d{4}\-\d{1,2}-\d{1,2}$
匹配国内电话号码:^\d{3}-\d{8}|\d{4}-\d{7,8}$
评注:匹配形式如 010-12345678 或 0571-12345678 或 0831-1234567
匹配中国邮政编码:^[1-9]\d{5}(?!\d)$
匹配身份证:\d{14}(\d{4}|(\d{3}[xX])|\d{1})
评注:中国的身份证为 15 位或 18 位
不能为空且二十字节以上:^[\s|\S]{20,}$
字符匹配
匹配由 26 个英文字母组成的字符串:^[A-Za-z]+$
匹配由 26 个大写英文字母组成的字符串:^[A-Z]+$
匹配由 26 个小写英文字母组成的字符串:^[a-z]+$
匹配由数字和 26 个英文字母组成的字符串:^[A-Za-z0-9]+$
匹配由数字、26个英文字母或者下划线组成的字符串:^\w+$
匹配空行:\n[\s| ]*\r
匹配任何内容:[\s\S]*
匹配中文字符:[\x80-\xff]+ 或者 [\xa1-\xff]+
只能输入汉字:^[\x80-\xff],{0,}$
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配数字
只能输入数字:^[0-9]*$
只能输入n位的数字:^\d{n}$
只能输入至少n位数字:^\d{n,}$
只能输入m-n位的数字:^\d{m,n}$
匹配正整数:^[1-9]\d*$
匹配负整数:^-[1-9]\d*$
匹配整数:^-?[1-9]\d*$
匹配非负整数(正整数 + 0):^[1-9]\d*|0$
匹配非正整数(负整数 + 0):^-[1-9]\d*|0$
匹配正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
匹配负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
匹配浮点数:^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
匹配非负浮点数(正浮点数 + 0):^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
匹配非正浮点数(负浮点数 + 0):^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
其他
匹配HTML标记的正则表达式(无法匹配嵌套标签):<(\S*?)[^>]*>.*?</\1>|<.*? />
匹配网址 URL :[a-zA-z]+://[^\s]*
匹配 IP 地址:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
匹配完整域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
1. ps 链接: https://pan.baidu.com/s/1i5oUJbv 密码: 9qjc
2.html5 + css3 链接: https://pan.baidu.com/s/1dFen9uD 密码: h636
3.javasript 链接: https://pan.baidu.com/s/1o76Lpv8 密码: m3cq
4.jquery 链接: https://pan.baidu.com/s/1bQg6Ii 密码: w7wv
5 bootstrap 链接: https://pan.baidu.com/s/1hsQQ1Ys 密码: wgsr
6. vue.js 链接: 链接: https://pan.baidu.com/s/1mhMywNQ 密码: vprt
7. Angular.js 链接: https://pan.baidu.com/s/1skCKMIT 密码: vxhs
8.node.js 链接: https://pan.baidu.com/s/1dERwwcp 密码: 9vsq
9.webpack 链接: https://pan.baidu.com/s/1jIKGNH0 密码: xs4f
10. Backbone 链接: https://pan.baidu.com/s/1dE7dAxz 密码: 863y
11. KnockOut 链接: https://pan.baidu.com/s/1o8Bfpjk 密码: 7bya
12.ECMAScript6 链接: https://pan.baidu.com/s/1skKSrCh 密码: 2esg
13. meteor 链接: https://pan.baidu.com/s/1pKIU48V 密码: 7jis
14 php 基础.链接: https://pan.baidu.com/s/1mhZp8YO 密码: 7xqv
15.mysql数据库 链接: https://pan.baidu.com/s/1dE3FMKD 密码: dgdc
16.memcached缓存优化 链接: https://pan.baidu.com/s/1o7U1RLK 密码: brfi
17. ThinkPHP 链接: https://pan.baidu.com/s/1qYfTbHi 密码: f7k6
18. Yil 链接: https://pan.baidu.com/s/1jIMcJhc 密码: rhv2
19 smarty 链接: https://pan.baidu.com/s/1c1OaEJ2 密码: 8jxq
Mysql 优化:
1 , 为查询缓存优化查询语句
2 , Explain 查看select语句
3 , 当只要一行数据时 , 用limit1
4 , 为搜索条件字段建立索引
5 , join查询的时候 , on关联的字段最好同类型
6 , 不要order by rand() , 打乱返回结果集
7 , 避免select *
8 , 为每张表都设置主键自增unsigned id
9 , 使用定长而不是边长 , 定长表就是static的
10 , 避免字段为null
11 , 可使用无缓冲字段mysql_unbuffered_query() , 每次执行就返回结果 , 不用等全部执行完
12 , 特定字段 , 特定存 , 比如ip varchar(12)可用int(32)
13 , 拆分大的delete和insert , 会锁表 , 影响其他进程堆积操作