PHP字符串函数(2)
1. chunk_split() 函数把字符串分割为一连串更小的部分
chunk_split(string,length,end)
参数 | 描述 |
---|---|
string | 必需。规定要分割的字符串。 |
length | 可选。数字值,定义字符串块的长度。默认是 76。 |
end | 可选。字符串值,定义在每个字符串块末端放置的内容。默认是 \r\n |
在每个字符后分割一次字符串,并在每个分割后添加 ".":
$str = "Shanghai"; echo chunk_split($str,1,".");
2. convert_cyr_string() 函数把字符串由一种 Cyrillic 字符集转换成另一种
convert_cyr_string(string,from,to)
被支持的 Cyrillic 字符集是:
- k - koi8-r
- w - windows-1251
- i - iso8859-5
- a - x-cp866
- d - x-cp866
- m - x-mac-cyrillic
3. convert_uuencode() 函数使用 uuencode 算法对字符串进行编码
该函数把所有字符串(包括二进制)编码为可打印的字符,以确保其数据库存储及网络传输数据的安全。
uuencoded 数据比原数据大约增大 35%。
$str = "Shanghai"; // 对字符串进行编码 $encodeString = convert_uuencode($str); echo $encodeString . "<br>"; // 对字符串进行解码 $decodeString = convert_uudecode($encodeString); echo $decodeString;
convert_uudecode() 函数对 uuencode 编码的字符串进行解码
4. count_chars() 函数返回字符串中所用字符的信息(例如,ASCII 字符在字符串中出现的次数,或者某个字符是否已经在字符串中使用过)
count_chars(string,mode)
可选。规定返回模式。默认是 0。以下是不同的返回模式:
- 0 - 数组,ASCII 值为键名,出现的次数为键值
- 1 - 数组,ASCII 值为键名,出现的次数为键值,只列出出现次数大于 0 的值
- 2 - 数组,ASCII 值为键名,出现的次数为键值,只列出出现次数等于 0 的值
- 3 - 字符串,带有所有使用过的不同的字符
- 4 - 字符串,带有所有未使用过的不同的字符
echo "<pre>"; $str = "Hello World!"; print_r(count_chars($str,0)); echo "<br/>"; print_r(count_chars($str,1)); echo "<br/>"; print_r(count_chars($str,2)); echo "<br/>"; echo count_chars($str,3); echo "<br/>"; echo count_chars($str,4);
-
mode = 1 Array ( [32] => 1 [33] => 1 [72] => 1 [87] => 1 [100] => 1 [101] => 1 [108] => 3 [111] => 2 [114] => 1 )
-
mode = 3 !HWdelor
5. crc32() 函数计算字符串的 32 位 CRC(循环冗余校验)
该函数可用于验证数据完整性。
提示:为了确保从 crc32() 函数中获得正确的字符串表示,您需要使用 printf() 或 sprintf() 函数的 %u 格式符。如果未使用 %u 格式符,结果可能会显示为不正确的数字或者负数。
以整数值返回字符串的 32 位循环冗余校验码多项式。
6. crypt() 函数返回使用 DES、Blowfish 或 MD5 算法加密的字符串
crypt(str,salt)
salt可选。用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt 参数,则每次调用该函数时 PHP 会随机生成一个。
返回加密后的字符串或一个少于 13 字符的字符串,从而保证在失败时与盐值区分开来
[CRYPT_SALT_LENGTH] | 默认的加密长度。使用标准的 DES 加密,长度为 2 |
[CRYPT_STD_DES] | 基于标准 DES 算法的散列使用 "./0-9A-Za-z" 字符中的两个字符作为盐值。在盐值中使用非法的字符将导致 crypt() 失败。 |
[CRYPT_EXT_DES] | 扩展的基于 DES 算法的散列。其盐值为 9 个字符的字符串,由 1 个下划线后面跟着 4 字节循环次数和 4 字节盐值组成。它们被编码成可打印字符,每个字符 6 位,有效位最少的优先。0 到 63 被编码为 "./0-9A-Za-z"。在盐值中使用非法的字符将导致 crypt() 失败。 |
[CRYPT_MD5] | MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。 |
[CRYPT_BLOWFISH] | Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数,它的范围是 04-31,超出这个范围将导致 crypt() 失败。 |
CRYPT_SHA256 | SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。 |
CRYPT_SHA512 | SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。 |
在该函数支持多种算法的系统上,如果支持上述常量则设置为 "1",否则设置为 "0"。
注释:没有相应的解密函数。crypt() 函数使用一种单向算法。
md5() sha1() 返回散列,md5返回32位,sha1返回40位长度的。也都是不可逆的。
7. explode() 函数把字符串打散为数
explode(separator,string,limit) (规定在哪里分割字符串,要分割的字符串,规定所返回的数组元素的数目)
limit可能的值:
- 大于 0 - 返回包含最多 limit 个元素的数组
- 小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组
- 0 - 返回包含一个元素的数组
echo "<pre>"; $str = 'one,two,three,four'; print_r(explode(',', $str)); // 零 limit print_r(explode(',',$str,0)); // 正的 limit print_r(explode(',',$str,2)); // 负的 limit print_r(explode(',',$str,-1));
8. fprintf() 函数把格式化的字符串写入指定的输出流(例如:文件或数据库)
fprintf(stream,format,arg1,arg2,arg++)
format
可能的格式值:
- %% - 返回一个百分号 %
- %b - 二进制数
- %c - ASCII 值对应的字符
- %d - 包含正负号的十进制数(负数、0、正数)
- %e - 使用小写的科学计数法(例如 1.2e+2)
- %E - 使用大写的科学计数法(例如 1.2E+2)
- %u - 不包含正负号的十进制数(大于等于 0)
- %f - 浮点数(本地设置)
- %F - 浮点数(非本地设置)
- %g - 较短的 %e 和 %f
- %G - 较短的 %E 和 %f
- %o - 八进制数
- %s - 字符串
- %x - 十六进制数(小写字母)
- %X - 十六进制数(大写字母)
附加的格式值。必需放置在 % 和字母之间(例如 %.2f):
- + (在数字前面加上 + 或 - 来定义数字的正负性。
默认地,只有负数才做标记,正数不做标记) - ' (规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。
例如:%'x20s(使用 "x" 作为填充)) - - (左调整变量值)
- [0-9] (规定变量值的最小宽度)
- .[0-9] (规定小数位数或最大字符串长度)
printf() 函数输出格式化的字符串
sprintf() 函数把格式化的字符串写入变量中
vfprintf() 函数把格式化的字符串写到指定的输出流(例如:文件或数据库)
vfprintf(stream,format,argarray)
与 fprintf() 不同,vfprintf() 中的参数位于数组中。数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。
vprintf() 函数输出格式化的字符串
vprintf(format,argarray)
与 printf() 不同,vprintf() 中的参数位于数组中。数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。
vsprintf() 函数把格式化字符串写入变量中。
vsprintf(format,argarray)
与 sprintf() 不同,vsprintf() 中的参数位于数组中。数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。
9. html_entity_decode() 函数把 HTML 实体转换为字符。
html_entity_decode() 函数是 htmlentities() 函数的反函数。
html_entity_decode(string,flags,character-set)
flag可用的引号类型:
- ENT_COMPAT - 默认。仅解码双引号。
- ENT_QUOTES - 解码双引号和单引号。
- ENT_NOQUOTES - 不解码任何引号。
规定所使用文档类型的附加 flags:
- ENT_HTML401 - 默认。作为 HTML 4.01 处理代码。
- ENT_HTML5 - 作为 HTML 5 处理代码。
- ENT_XML1 - 作为 XML 1 处理代码。
- ENT_XHTML - 作为 XHTML 处理代码。
character-set允许的值:
- UTF-8 - 默认。ASCII 兼容多字节的 8 位 Unicode
- ISO-8859-1 - 西欧
- ISO-8859-15 - 西欧(加入欧元符号 + ISO-8859-1 中丢失的法语和芬兰语字母)
- cp866 - DOS 专用 Cyrillic 字符集
- cp1251 - Windows 专用 Cyrillic 字符集
- cp1252 - Windows 专用西欧字符集
- KOI8-R - 俄语
- BIG5 - 繁体中文,主要在台湾使用
- GB2312 - 简体中文,国家标准字符集
- BIG5-HKSCS - 带香港扩展的 Big5
- Shift_JIS - 日语
- EUC-JP - 日语
- MacRoman - Mac 操作系统使用的字符集
10. htmlentities() 函数把字符转换为 HTML 实体
htmlentities(string,flags,character-set,double_encode)