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)
posted @ 2016-02-24 15:32  sundong_wyz  阅读(255)  评论(0编辑  收藏  举报