ascii
求一个php生成随机字符串的函数
PHP • liuliangsong 回复了问题 • 2 人关注 • 1 个回复 • 8296 次浏览 • 2016-11-06 23:58
PHP正则表达式匹配所有ASCII字符
PHP • liuliangsong 发表了文章 • 0 个评论 • 8185 次浏览 • 2016-10-18 22:15
PHP可以使用"#[[:ascii:]]#"或者"#[\x{00}-\x{ff}]#u"来匹配ASCII字符。[pre=php]<?php
//删除所有ascii字符
echo preg_replace("#[\x{00}-\x{ff}]#u", "", "abc!@爱E族#{}x aiezu.com");
//输出: 爱族
//删除所有非ascii字符
echo preg_replace("#[^[:ascii:]]#u", "", "abc!@爱E族#{}x aiezu.com" 查看原文 »
PHP计算字符串长度,中文长度为2,英文为1
PHP • liuliangsong 发表了文章 • 0 个评论 • 7285 次浏览 • 2016-10-18 11:19
PHP计算字符串长度,ASCII字符(英文、数字、字母等)长度算1,非ASCII字符(汉字等多字节字符)长度算2:
[b]方法一:[/b]
[b] [/b] 将非ascii字符替换成两个星号,再使用strlen计算长度:[pre=php]<?php
function abslength( $str ) {
return strlen(preg_replace("#[^\x{00}-\x{ff}]#u", '**', $str));
}
echo abslength("爱E族: aiezu.com"); //输出1 查看原文 »
条新动态, 点击查看
使用下面自定义函数即可,其中第一个参数$len是要生成的随机字符串长度,第二个参数是随机数生成范围的掩码(爱E族:aiezu.com)。
生成范围的4种基本掩码和对应的类型为:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符。要生成多种... 显示全部 »
生成范围的4种基本掩码和对应的类型为:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符。要生成多种... 显示全部 »
使用下面自定义函数即可,其中第一个参数$len是要生成的随机字符串长度,第二个参数是随机数生成范围的掩码(爱E族:aiezu.com)。
生成范围的4种基本掩码和对应的类型为:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符。要生成多种类型,直接将上面对应的掩码相加就行,如:大小写字母,$mask为3;大小写字母和数字,$mask为7。[pre=php]<?php
/*
* 生成随机字符串(可选含数字、字母、特殊字符)
* 爱E族: aiezu.com
* $len 生成字符串的长度
* $mask 生成字符范围的掩码之和:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符
*/
function randChars( $len = 8, $mask = 7 ) {
$result = $seeds = '';
$maskChars = array(
'1' => "abcdefghijklmnopqrstuvwxyz"
,'2' => "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
,'4' => "0123456789"
,'8' => "!\"#$%&'()*+,-./:;<=>?@ ^-`{|}"
);
foreach($maskChars as $key=>$val ) {
($mask & $key) === $key && $seeds .= $val;
}
while( $seeds && strlen($result) < $len ) {
$result .= substr($seeds, rand(0, strlen($seeds)-1), 1);
}
return $result;
} 下面是用法: echo sprintf("% 16s: 16位小写字母mask:1\n", randChars(16, 1));
echo sprintf("% 16s: 8位大写字母mask:2\n", randChars(8, 2));
echo sprintf("% 16s: 12位大、小写字母mask:1+2=3\n", randChars(12, 3));
echo sprintf("% 16s: 16位数字mask:4\n", randChars(16, 4));
echo sprintf("% 16s: 16位大、小写字母和数字mask:1+2+4\n", randChars(16, 7));
echo sprintf("% 16s: 12位特殊字符mask:8\n", randChars(12, 8));
echo sprintf("% 16s: 16位大小写字母、数字、特殊字符mask:1+2+4+8=15\n", randChars(16, 15)); 输出结果: ebbgzzxzxpaiejvt: 16位小写字母mask:1
EWSCCUPX: 8位大写字母mask:2
HufkJUVTXYfW: 12位大、小写字母mask:1+2=3
9098692730559259: 16位数字mask:4
cl2RK83q2ZiZXpVU: 16位大、小写字母和数字mask:1+2+4
)@>`?^?!`&:]: 12位特殊字符mask:8
Qj,UB9s>7jnW]AG%: 16位大小写字母、数字、特殊字符mask:1+2+4+8=15
生成范围的4种基本掩码和对应的类型为:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符。要生成多种类型,直接将上面对应的掩码相加就行,如:大小写字母,$mask为3;大小写字母和数字,$mask为7。[pre=php]<?php
/*
* 生成随机字符串(可选含数字、字母、特殊字符)
* 爱E族: aiezu.com
* $len 生成字符串的长度
* $mask 生成字符范围的掩码之和:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符
*/
function randChars( $len = 8, $mask = 7 ) {
$result = $seeds = '';
$maskChars = array(
'1' => "abcdefghijklmnopqrstuvwxyz"
,'2' => "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
,'4' => "0123456789"
,'8' => "!\"#$%&'()*+,-./:;<=>?@ ^-`{|}"
);
foreach($maskChars as $key=>$val ) {
($mask & $key) === $key && $seeds .= $val;
}
while( $seeds && strlen($result) < $len ) {
$result .= substr($seeds, rand(0, strlen($seeds)-1), 1);
}
return $result;
} 下面是用法: echo sprintf("% 16s: 16位小写字母mask:1\n", randChars(16, 1));
echo sprintf("% 16s: 8位大写字母mask:2\n", randChars(8, 2));
echo sprintf("% 16s: 12位大、小写字母mask:1+2=3\n", randChars(12, 3));
echo sprintf("% 16s: 16位数字mask:4\n", randChars(16, 4));
echo sprintf("% 16s: 16位大、小写字母和数字mask:1+2+4\n", randChars(16, 7));
echo sprintf("% 16s: 12位特殊字符mask:8\n", randChars(12, 8));
echo sprintf("% 16s: 16位大小写字母、数字、特殊字符mask:1+2+4+8=15\n", randChars(16, 15)); 输出结果: ebbgzzxzxpaiejvt: 16位小写字母mask:1
EWSCCUPX: 8位大写字母mask:2
HufkJUVTXYfW: 12位大、小写字母mask:1+2=3
9098692730559259: 16位数字mask:4
cl2RK83q2ZiZXpVU: 16位大、小写字母和数字mask:1+2+4
)@>`?^?!`&:]: 12位特殊字符mask:8
Qj,UB9s>7jnW]AG%: 16位大小写字母、数字、特殊字符mask:1+2+4+8=15
PHP正则表达式匹配所有ASCII字符
PHP • liuliangsong 发表了文章 • 0 个评论 • 8185 次浏览 • 2016-10-18 22:15
PHP可以使用"#[[:ascii:]]#"或者"#[\x{00}-\x{ff}]#u"来匹配ASCII字符。[pre=php]<?php
//删除所有ascii字符
echo preg_replace("#[\x{00}-\x{ff}]#u", "", "abc!@爱E族#{}x aiezu.com");
//输出: 爱族
//删除所有非ascii字符
echo preg_replace("#[^[:ascii:]]#u", "", "abc!@爱E族#{}x aiezu.com" 查看原文 »
PHP计算字符串长度,中文长度为2,英文为1
PHP • liuliangsong 发表了文章 • 0 个评论 • 7285 次浏览 • 2016-10-18 11:19
PHP计算字符串长度,ASCII字符(英文、数字、字母等)长度算1,非ASCII字符(汉字等多字节字符)长度算2:
[b]方法一:[/b]
[b] [/b] 将非ascii字符替换成两个星号,再使用strlen计算长度:[pre=php]<?php
function abslength( $str ) {
return strlen(preg_replace("#[^\x{00}-\x{ff}]#u", '**', $str));
}
echo abslength("爱E族: aiezu.com"); //输出1 查看原文 »