>백엔드 개발 >PHP 튜토리얼 >PHP 문자열에 대한 치트 시트 요약

PHP 문자열에 대한 치트 시트 요약

不言
不言원래의
2018-06-11 11:19:211755검색

这篇文章主要介绍了关于PHP字符串中的速查表总结,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

PHP 字符串 速查表

1、addcslashes

    以C语言风格使用反斜线转义字符串中的字符

2、addslashes

    使用反斜线引用字符串
    <?php
$str = "Is your name O&#39;reilly?";

// 输出: Is your name O\&#39;reilly?
echo addslashes($str);
?>

3、bin2hex

    函数把包含数据的二进制字符串转换为十六进制值

4、chop

    rtrim()的别名

5、chr

    返回指定的字符,此函数与ord()是互补的

6、chunk_split

    将字符串分隔成小块
    string chunk_split ( string $body [, int $chunklen = 76 [, string $end = "\r\n" ]] )
使用此函数将字符串分割成小块非常有用。例如将 base64_encode() 的输出转换成符合 RFC 2045 语义的字符串。它会在每 chunklen 个字符后边插入 end。  
<?php
// 使用 RFC 2045 语义格式化 $data
$new_string = chunk_split(base64_encode($data));
?>

7、convert_cyr_string

    将字符由一种Cyrillic字符转换成另一种
    string convert_cyr_string ( string $str , string $from , string $to )
此函数将给定的字符串从一种 Cyrillic 字符转换成另一种,返回转换之后的字符串。

8、convert_uudecode

    解码一个uuencode编码的字符串

9、convert_uudecode

    使用uuencode编码一个字符串
    string convert_uuencode ( string $data )

convert_uuencode() 使用 uuencode 算法对一个字符串进行编码。

uuencode 算法会将所有(含二进制)字符串转化为可输出的字符, 并且可以被安全的应用于网络传输。使用 uuencode 编码后的数据 将会比源数据大35%左右

10、count_chars

    返回字符串所用字符的信息
    根据不同的 mode,count_chars() 返回下列不同的结果:

0 - 以所有的每个字节值作为键名,出现次数作为值的数组。
1 - 与 0 相同,但只列出出现次数大于零的字节值。
2 - 与 0 相同,但只列出出现次数等于零的字节值。
3 - 返回由所有使用了的字节值组成的字符串。
4 - 返回由所有未使用的字节值组成的字符串。

11、crc32

    计算一个字符串的crc32多项式

12、crypt

    单向字符串散列
    string crypt ( string $str [, string $salt ] )
crypt() 返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。

salt 参数是可选的。然而,如果没有salt的话,crypt()创建出来的会是弱密码。 php 5.6及之后的版本会在没有它的情况下抛出一个 E_NOTICE 级别的错误。为了更好的安全性,请确保指定一个足够强度的盐值。

password_hash()使用了一个强的哈希算法,来产生足够强的盐值,并且会自动进行合适的轮次。password_hash()是crypt()的一个简单封装,并且完全与现有的密码哈希兼容。推荐使用password_hash()。

有些系统支持不止一种散列类型。实际上,有时候,基于 MD5 的算法被用来替代基于标准 DES 的算法。这种散列类型由盐值参数触发。在 5.3 之前,PHP 在安装时根据系统的 crypt() 决定可用的算法。如果没有提供盐值,PHP 将自动生成一个 2 个字符(DES)或者 12 个字符(MD5)的盐值 ,这取决于 MD5 crypt() 的可用性。PHP 设置了一个名为 CRYPT_SALT_LENGTH 的常量,用来表示可用散列允许的最长可用盐值。

基于标准 DES 算法的 crypt() 在输出内容的开始位置返回两个字符的盐值。它也只使用 str 的开始 8 个字符,所以更长的以相同 8 个字符开始的字符串也将生成相同的结果(当使用了相同的盐值时)。

在 crypt() 函数支持多重散列的系统上,下面的常量根据相应的类型是否可用被设置为 0 或 1:

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() 失败。 PHP 5.3.7 之前只支持 “$2a$” 作为盐值的前缀,PHP 5.3.7 开始引入了新的前缀来修正一个在Blowfish实现上的安全风险。可以参考» this document来了解关于这个修复的更多信息。总而言之,开发者如果仅针对 PHP 5.3.7及之后版本进行开发,那应该使用 “$2y$” 而非 “$2a$”
CRYPT_SHA256 - SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=ecb5fc74e9cd1f249d43a2bdbf2f239d$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。
CRYPT_SHA512 - SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=ecb5fc74e9cd1f249d43a2bdbf2f239d$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。
Note:
从 PHP 5.3.0 起,PHP 包含了它自己的实现,并将在系统缺乏相应算法支持的时候使用它自己的实现。

13、echo

    输出一个或多个字符串
    输出所有参数、不会换行,它是一个语言结构。

14、explode

    使用一个字符串分隔另一个字符串
    array explode ( string $delimiter , string $string [, int $limit ] )
此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。

15、fprintf

    将格式化的字符串写入到流
    int fprintf ( resource $handle , string $format [, mixed $args [, mixed $... ]] )
写入一个根据 format 格式化后的字符串到 由 handle 句柄打开的流中。

16、get_html_translation_table

    返回使用htmlspecialchars()和htmlentities()后的转化表

17、hebrev

    将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文

18、hebrevc

     将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew),并且转换换行符

19、hex2bin

    转换十六进制字符串为二进制字符串

20、html_entity_decode

    Convert all HTML entities to their applicable characters

21、htmlentites

    Convert all applicable characters to HTML entities

22、htmlspecialchars_decode

    将特殊的HTML实体转换回普通字符

23、htmlspecialchars

    Convert special characters to HTML entities

24、implode

    将一个一维数组的值转化为字符串
    string implode ( string $glue , array $pieces )

string implode ( array $pieces )
   用 glue 将一维数组的值连接为一个字符串。

Note:
因为历史原因,implode() 可以接收两种参数顺序,但是 explode() 不行。不过按文档中的顺序可以避免混淆。

25、join

    别名implode()

26、lcfirst

    使一个字符串的第一个字符小写
    string lcfirst ( string $str )
返回str的第一个字符小写了的字符串。如果str的第一个字符是字母,则将其转换为小写。

需要注意的是“字母”是由当前语言区域决定的。比如,在默认的“C”区域像日耳曼语系中的元音变音a (ä) 将不会被转换。

27、levenshtein

    计算两个字符串之间的编辑距离
    int levenshtein ( string $str1 , string $str2 )
int levenshtein ( string $str1 , string $str2 , int $cost_ins , int $cost_rep , int $cost_del )编辑距离,是指两个字串之间,通过替换、插入、删除等操作将字符串  str1转换成str2所需要操作的最少字符数量。 该算法的复杂度是 O(m*n),其中 n 和 m 分别是str1 和str2的长度 (当和算法复杂度为O(max(n,m)**3)的similar_text()相比时,此函数还是相当不错的,尽管仍然很耗时。)。

在最简单的形式中,该函数只以两个字符串作为参数,并计算通过插入、替换和删除等操作将str1转换成str2所需要的操作次数。

第二种变体将采用三个额外的参数来定义插入、替换和删除操作的次数。此变体比第一种更加通用和适应,但效率不高。

28、localeconv

    Get numeric formatting information

29、 ltrim

    删除字符串开头的空白字符
    string ltrim ( string $str [, string $character_mask ] )
删除字符串开头的空白字符(或其他字符)

30、md5_file

    计算指定文件的MD5散列值
    string md5_file ( string $filename [, bool $raw_output = false ] )
使用 » RSA 数据安全公司的 MD5 报文算法计算 filename 文件的 MD5 散列值并返回。该散列值为 32 字符的十六进制数字。

31、md5

    计算字符串的MD5散列值
    string md5 ( string $str [, bool $raw_output = false ] )
使用 » RSA 数据安全公司的 MD5 报文算法计算 str 的 MD5 散列值。

32、metaphone

    Calculate the metaphone key of a string
    403a49b6ecae0f0c2d2b39dff932e2b8
以上例程的输出类似于:

string(7) "PRKRMNK"
string(6) "PRKRMR"

33、money_format

    将数组格式化成货币字符串
    string money_format ( string $format , float $number )
money_format() 返回格式化好的 number 版本。 此函数包装了 C 函数库中的 strfmon(),不同之处是:此实现每次只能转化一个数字。
Note:
具有 strfmon 的系统才有 money_format() 函数。 例如 Windows 不具备,所以 Windows 系统上 money_format() 未定义。
Note:
locale 设置中, LC_MONETARY 会影响此函数的行为。 在使用函数前,首先要用 setlocale() 来设置合适的区域设置(locale)。

34、nl_langinfo

    Query language and locale information

35、nl2br

    在字符串所有新行之前插入HTML换行标记
    string nl2br ( string $string [, bool $is_xhtml = true ] )
在字符串 string 所有新行之前插入 'ff9d32c555bb1d9133a29eb4371c1213' 或 '0c6dc11e160d3b678d68754cc175188a',并返回。

36、number_format

    以千位分隔符方式格式化一个数字
    string number_format ( float $number [, int $decimals = 0 ] )
string number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )
本函数可以接受1个、2个或者4个参数(注意:不能是3个):

如果只提供第一个参数,number的小数部分会被去掉 并且每个千位分隔符都是英文小写逗号","
如果提供两个参数,number将保留小数点后的位数到你设定的值,其余同楼上
如果提供了四个参数,number 将保留decimals个长度的小数部分, 小数点被替换为dec_point,千位分隔符替换为thousands_sep

37、ord

    返回字符的ASCII码值

38、parse_str

    将字符串解析成多个变量
    void parse_str ( string $str [, array &$arr ] )
如果 str 是 URL 传递入的查询字符串(query string),则将它解析为变量并设置到当前作用域。

Note:
获取当前的 QUERY_STRING,你可以使用 $_SERVER['QUERY_STRING'] 变量。 同时,你也许该阅读 来自 PHP 之外的变量 这一节。
Note:
magic_quotes_gpc 影响到了 parse_str() 这个函数的输出,和 PHP 用于填充 $_GET、 $_POST 及其他变量的机制一致。

39、print

    输出字符串

40、printf

    输出格式化字符串

41、quoted_printable_decode

    将quoted-printable字符串转换为8-bit字符串

42、quoted_printable_encode

    将8-bit字符串转换成quoted-printable字符串

43、quotemeta

    转义元字符集

44、rtrim

    删除字符串末端的空白字符(或者其他字符)
    string rtrim ( string $str [, string $character_mask ] )
该函数删除 str 末端的空白字符并返回。

不使用第二个参数,rtrim() 仅删除以下字符:

" " (ASCII 32 (0x20)),普通空白符。
"\t" (ASCII 9 (0x09)),制表符。
"\n" (ASCII 10 (0x0A)),换行符。
"\r" (ASCII 13 (0x0D)),回车符。
"\0" (ASCII 0 (0x00)),NUL 空字节符。
"\x0B" (ASCII 11 (0x0B)),垂直制表符。

45、setlocale

    设置地区信息

46、sha1_file

    计算文件的sha1散列值
    string sha1_file ( string $filename [, bool $raw_output = false ] )
利用» 美国安全散列算法 1,计算并返回由 filename 指定的文件的 sha1 散列值。该散列值是一个 40 字符长度的十六进制数字。

47、sha1

    计算字符串的sha1散列值
    string sha1 ( string $str [, bool $raw_output = false ] )
利用» 美国安全散列算法 1 计算字符串的 sha1 散列值。

48、similar_text

    计算两个字符串的相似度
    int similar_text ( string $first , string $second [, float &$percent ] )
两个字符串的相似程度计算依据 Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1) 的描述进行。注意该实现没有使用 Oliver 虚拟码中的堆栈,但是却进行了递归调用,这个做法可能会导致整个过程变慢或变快。也请注意,该算法的复杂度是 O(N**3),N 是最长字符串的长度。

49、soundex

    Calculate the soundex key of a string

50、sprintf

    return a a formatted string

51、sscanf

    根据指定格式解析输入的字符
        mixed sscanf ( string $str , string $format [, mixed &$... ] )
这个函数 sscanf() 输入类似 printf()。 sscanf() 读取字符串str 然后根据指定格式format解析, 格式的描述文档见 sprintf()。

指定的格式字符串中的任意空白匹配输入字符串的任意空白.也就是说即使是格式字符串中的一个制表符 \t 也能匹配输入 字符串中的一个单一空格字符

52、str_getcsv

    解析CSV字符串为一个数组

53、str_ireplace

    str_replace()的忽略大小写版本

54、str_pad

    使用另一个字符串填充字符串为指定长度
    cc0339ee7b599ef3e8e8e35bab5a9a1b<h3>55、str_repeat</h3><pre class="brush:php;toolbar:false">    重复一个字符串

56、str_replace

    子字符串替换
    mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。

如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 ereg_replace() 和 preg_replace()。

57、str_rot13

    对字符串执行ROT13转换

58、str_shuffle

    随机打乱一个字符串

59、str_split

    将字符串转换为数组

60、str_word_count

    返回字符串中单词的使用情况
    mixed str_word_count ( string $string [, int $format = 0 [, string $charlist ]] )
统计 string 中单词的数量。如果可选的参数 format 没有被指定,那么返回值是一个代表单词数量的整型数。如果指定了 format 参数,返回值将是一个数组,数组的内容则取决于 format 参数。format 的可能值和相应的输出结果如下所列。

对于这个函数的目的来说,单词的定义是一个与区域设置相关的字符串。这个字符串可以包含字母字符,也可以包含 "'" 和 "-" 字符(但不能以这两个字符开始)。

61、strcasecmp

    二进制安全比较字符串(不区分大小写)

62、strchr

    别名strstr()

63、strcmp

    二进制安全字符串比较
    Notice 比较区分大小写

64、strcoll

    基于区域设置的字符串比较

65、strcspn

    获取不匹配遮罩的起始字符串的长度
    int strcspn ( string $str1 , string $str2 [, int $start [, int $length ]] )
返回 str1 中,所有字符都不存在于 str2 范围的起始子字符串的长度。

66、strip_tags

    从字符串中去除HTML和PHP标记
    string strip_tags ( string $str [, string $allowable_tags ] )
该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。它使用与函数 fgetss() 一样的机制去除标记。

67、stripcslashes

    反引用一个使用addcslashes()转义的字符串

68、stripos

    查找字符串首次出现的位置(不区分大小写)
    int stripos ( string $haystack , string $needle [, int $offset = 0 ] )
返回在字符串 haystack 中 needle 首次出现的数字位置。

与 strpos() 不同,stripos() 不区分大小写。

69、stripslashes

    反引用一个引用字符串
    string stripslashes ( string $str )

反引用一个引用字符串。

Note:
如果 magic_quotes_sybase 项开启,反斜线将被去除,但是两个反斜线将会被替换成一个。
一个使用范例是使用 PHP 检测 magic_quotes_gpc 配置项的 开启情况(在 PHP 5.4之 前默认是开启的)并且你不需要将数据插入到一个需要转义的位置(例如数据库)。例如,你只是简单地将表单数据直接输出。

70、stristr

    strstr()函数的忽略大小写版本

71、strlen

    获取字符串长度

72、strnatcasecmp

    使用“自然顺序”算法比较字符串(不区分大小写)

73、strnatcmp

    使用自然排序算法比较字符串
    int strnatcmp ( string $str1 , string $str2 )
该函数实现了以人类习惯对数字型字符串进行排序的比较算法,这就是“自然顺序”。注意该比较区分大小写。

74、strncmp

    二进制安全比较字符串开头的若干个字符
    int strncmp ( string $str1 , string $str2 , int $len )
该函数与 strcmp() 类似,不同之处在于你可以指定两个字符串比较时使用的长度(即最大比较长度)。

注意该比较区分大小写。

75、strpbrk

    在字符串中查找一组字符的任何一个字符

76、strpos

    查找字符串首次出现的位置
    mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
返回 needle 在 haystack 中首次出现的数字位置。

77、strrchr

    查找指定字符在字符串中的最后一次出现
    string strrchr ( string $haystack , mixed $needle )
该函数返回 haystack 字符串中的一部分,这部分以 needle 的最后出现位置开始,直到 haystack 末尾。

78、strrev

    反转字符串

79、strripos

    计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
    int strripos ( string $haystack , string $needle [, int $offset = 0 ] )
以不区分大小写的方式查找指定字符串在目标字符串中最后一次出现的位置。与 strrpos() 不同,strripos() 不区分大小写。

80、strrpos

    计算指定字符串在目标字符串中最后一次出现的位置
    int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
返回字符串 haystack 中 needle 最后一次出现的数字位置。注意 PHP4 中,needle 只能为单个字符。如果 needle 被指定为一个字符串,那么将仅使用第一个字符。

81、strspn

    计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度

82、strstr

    查找字符串的首次出现
    string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。

Note:
该函数区分大小写。如果想要不区分大小写,请使用 stristr()。
Note:
如果你仅仅想确定 needle 是否存在于 haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。

83、strtok

    标记分隔字符串
    string strtok ( string $str , string $token )
string strtok ( string $token )
strtok() 将字符串 str 分割为若干子字符串,每个子字符串以 token 中的字符分割。这也就意味着,如果有个字符串是 "This is an example string",你可以使用空格字符将这句话分割成独立的单词。

注意仅第一次调用 strtok 函数时使用 string 参数。后来每次调用 strtok,都将只使用 token 参数,因为它会记住它在字符串 string 中的位置。如果要重新开始分割一个新的字符串,你需要再次使用 string 来调用 strtok 函数,以便完成初始化工作。注意可以在 token 参数中使用多个字符。字符串将被该参数中任何一个字符分割。

84、strtolower

    将字符串转化为小写

85、strtoupper

    将字符串转化为大写

86、strtr

    转换指定字符

87、substr_compare

    二进制安全比较字符串(从偏移位置比较指定长度)
    14d4cbfae0e5d308f2401f85812cefff

88、substr_count

    计算字符串出现的次数
    ae11c812292a7ba150bd9c5552d5904c 14,所以生成警告
echo substr_count($text, 'is', 5, 10);


// 输出 1,因为该函数不计算重叠字符串
$text2 = 'gcdgcdgcd';
echo substr_count($text2, 'gcdgcd');
?>

89、substr_replace

    替换字符串的字串

90、substr

    返回字符串的字串

91、trim

    去除字符串首尾处的空白字符

92、ucfirst

    将字符串的首字母转换为大写

93、ucwords

    将字符串中每个单词的首字母转化为大写

94、vfprintf

    将格式化字符串写入流

95、vprintf

    输出格式化字符串

96、vsprintf

    返回格式化字符串

97、wordwrap

    打断字符串为指定数量的字符串

98、strncasecmp

    二进制安全比较字符串开头的若干个字符(不区分大小写)

           

PHP 字符串 速查表

1、addcslashes

    以C语言风格使用反斜线转义字符串中的字符

2、addslashes

    使用反斜线引用字符串
    b93703111f414eab9c561012788311a0<h3>3、bin2hex</h3><pre class="brush:php;toolbar:false">    函数把包含数据的二进制字符串转换为十六进制值

4、chop

    rtrim()的别名

5、chr

    返回指定的字符,此函数与ord()是互补的

6、chunk_split

    将字符串分隔成小块
    string chunk_split ( string $body [, int $chunklen = 76 [, string $end = "\r\n" ]] )
使用此函数将字符串分割成小块非常有用。例如将 base64_encode() 的输出转换成符合 RFC 2045 语义的字符串。它会在每 chunklen 个字符后边插入 end。  
e8807b26ef971e6a82a10fdfee06f29d

7、convert_cyr_string

    将字符由一种Cyrillic字符转换成另一种
    string convert_cyr_string ( string $str , string $from , string $to )
此函数将给定的字符串从一种 Cyrillic 字符转换成另一种,返回转换之后的字符串。

8、convert_uudecode

    解码一个uuencode编码的字符串

9、convert_uudecode

    使用uuencode编码一个字符串
    string convert_uuencode ( string $data )

convert_uuencode() 使用 uuencode 算法对一个字符串进行编码。

uuencode 算法会将所有(含二进制)字符串转化为可输出的字符, 并且可以被安全的应用于网络传输。使用 uuencode 编码后的数据 将会比源数据大35%左右

10、count_chars

    返回字符串所用字符的信息
    根据不同的 mode,count_chars() 返回下列不同的结果:

0 - 以所有的每个字节值作为键名,出现次数作为值的数组。
1 - 与 0 相同,但只列出出现次数大于零的字节值。
2 - 与 0 相同,但只列出出现次数等于零的字节值。
3 - 返回由所有使用了的字节值组成的字符串。
4 - 返回由所有未使用的字节值组成的字符串。

11、crc32

    计算一个字符串的crc32多项式

12、crypt

    单向字符串散列
    string crypt ( string $str [, string $salt ] )
crypt() 返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。

salt 参数是可选的。然而,如果没有salt的话,crypt()创建出来的会是弱密码。 php 5.6及之后的版本会在没有它的情况下抛出一个 E_NOTICE 级别的错误。为了更好的安全性,请确保指定一个足够强度的盐值。

password_hash()使用了一个强的哈希算法,来产生足够强的盐值,并且会自动进行合适的轮次。password_hash()是crypt()的一个简单封装,并且完全与现有的密码哈希兼容。推荐使用password_hash()。

有些系统支持不止一种散列类型。实际上,有时候,基于 MD5 的算法被用来替代基于标准 DES 的算法。这种散列类型由盐值参数触发。在 5.3 之前,PHP 在安装时根据系统的 crypt() 决定可用的算法。如果没有提供盐值,PHP 将自动生成一个 2 个字符(DES)或者 12 个字符(MD5)的盐值 ,这取决于 MD5 crypt() 的可用性。PHP 设置了一个名为 CRYPT_SALT_LENGTH 的常量,用来表示可用散列允许的最长可用盐值。

基于标准 DES 算法的 crypt() 在输出内容的开始位置返回两个字符的盐值。它也只使用 str 的开始 8 个字符,所以更长的以相同 8 个字符开始的字符串也将生成相同的结果(当使用了相同的盐值时)。

在 crypt() 函数支持多重散列的系统上,下面的常量根据相应的类型是否可用被设置为 0 或 1:

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() 失败。 PHP 5.3.7 之前只支持 “$2a$” 作为盐值的前缀,PHP 5.3.7 开始引入了新的前缀来修正一个在Blowfish实现上的安全风险。可以参考» this document来了解关于这个修复的更多信息。总而言之,开发者如果仅针对 PHP 5.3.7及之后版本进行开发,那应该使用 “$2y$” 而非 “$2a$”
CRYPT_SHA256 - SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=ecb5fc74e9cd1f249d43a2bdbf2f239d$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。
CRYPT_SHA512 - SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=ecb5fc74e9cd1f249d43a2bdbf2f239d$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。
Note:
从 PHP 5.3.0 起,PHP 包含了它自己的实现,并将在系统缺乏相应算法支持的时候使用它自己的实现。

13、echo

    输出一个或多个字符串
    输出所有参数、不会换行,它是一个语言结构。

14、explode

    使用一个字符串分隔另一个字符串
    array explode ( string $delimiter , string $string [, int $limit ] )
此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。

15、fprintf

    将格式化的字符串写入到流
    int fprintf ( resource $handle , string $format [, mixed $args [, mixed $... ]] )
写入一个根据 format 格式化后的字符串到 由 handle 句柄打开的流中。

16、get_html_translation_table

    返回使用htmlspecialchars()和htmlentities()后的转化表

17、hebrev

    将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文

18、hebrevc

     将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew),并且转换换行符

19、hex2bin

    转换十六进制字符串为二进制字符串

20、html_entity_decode

    Convert all HTML entities to their applicable characters

21、htmlentites

    Convert all applicable characters to HTML entities

22、htmlspecialchars_decode

    将特殊的HTML实体转换回普通字符

23、htmlspecialchars

    Convert special characters to HTML entities

24、implode

    将一个一维数组的值转化为字符串
    string implode ( string $glue , array $pieces )

string implode ( array $pieces )
   用 glue 将一维数组的值连接为一个字符串。

Note:
因为历史原因,implode() 可以接收两种参数顺序,但是 explode() 不行。不过按文档中的顺序可以避免混淆。

25、join

    别名implode()

26、lcfirst

    使一个字符串的第一个字符小写
    string lcfirst ( string $str )
返回str的第一个字符小写了的字符串。如果str的第一个字符是字母,则将其转换为小写。

需要注意的是“字母”是由当前语言区域决定的。比如,在默认的“C”区域像日耳曼语系中的元音变音a (ä) 将不会被转换。

27、levenshtein

    计算两个字符串之间的编辑距离
    int levenshtein ( string $str1 , string $str2 )
int levenshtein ( string $str1 , string $str2 , int $cost_ins , int $cost_rep , int $cost_del )编辑距离,是指两个字串之间,通过替换、插入、删除等操作将字符串  str1转换成str2所需要操作的最少字符数量。 该算法的复杂度是 O(m*n),其中 n 和 m 分别是str1 和str2的长度 (当和算法复杂度为O(max(n,m)**3)的similar_text()相比时,此函数还是相当不错的,尽管仍然很耗时。)。

在最简单的形式中,该函数只以两个字符串作为参数,并计算通过插入、替换和删除等操作将str1转换成str2所需要的操作次数。

第二种变体将采用三个额外的参数来定义插入、替换和删除操作的次数。此变体比第一种更加通用和适应,但效率不高。

28、localeconv

    Get numeric formatting information

29、 ltrim

    删除字符串开头的空白字符
    string ltrim ( string $str [, string $character_mask ] )
删除字符串开头的空白字符(或其他字符)

30、md5_file

    计算指定文件的MD5散列值
    string md5_file ( string $filename [, bool $raw_output = false ] )
使用 » RSA 数据安全公司的 MD5 报文算法计算 filename 文件的 MD5 散列值并返回。该散列值为 32 字符的十六进制数字。

31、md5

    计算字符串的MD5散列值
    string md5 ( string $str [, bool $raw_output = false ] )
使用 » RSA 数据安全公司的 MD5 报文算法计算 str 的 MD5 散列值。

32、metaphone

    Calculate the metaphone key of a string
    403a49b6ecae0f0c2d2b39dff932e2b8
以上例程的输出类似于:

string(7) "PRKRMNK"
string(6) "PRKRMR"

33、money_format

    将数组格式化成货币字符串
    string money_format ( string $format , float $number )
money_format() 返回格式化好的 number 版本。 此函数包装了 C 函数库中的 strfmon(),不同之处是:此实现每次只能转化一个数字。
Note:
具有 strfmon 的系统才有 money_format() 函数。 例如 Windows 不具备,所以 Windows 系统上 money_format() 未定义。
Note:
locale 设置中, LC_MONETARY 会影响此函数的行为。 在使用函数前,首先要用 setlocale() 来设置合适的区域设置(locale)。

34、nl_langinfo

    Query language and locale information

35、nl2br

    在字符串所有新行之前插入HTML换行标记
    string nl2br ( string $string [, bool $is_xhtml = true ] )
在字符串 string 所有新行之前插入 'ff9d32c555bb1d9133a29eb4371c1213' 或 '0c6dc11e160d3b678d68754cc175188a',并返回。

36、number_format

    以千位分隔符方式格式化一个数字
    string number_format ( float $number [, int $decimals = 0 ] )
string number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )
本函数可以接受1个、2个或者4个参数(注意:不能是3个):

如果只提供第一个参数,number的小数部分会被去掉 并且每个千位分隔符都是英文小写逗号","
如果提供两个参数,number将保留小数点后的位数到你设定的值,其余同楼上
如果提供了四个参数,number 将保留decimals个长度的小数部分, 小数点被替换为dec_point,千位分隔符替换为thousands_sep

37、ord

    返回字符的ASCII码值

38、parse_str

    将字符串解析成多个变量
    void parse_str ( string $str [, array &$arr ] )
如果 str 是 URL 传递入的查询字符串(query string),则将它解析为变量并设置到当前作用域。

Note:
获取当前的 QUERY_STRING,你可以使用 $_SERVER['QUERY_STRING'] 变量。 同时,你也许该阅读 来自 PHP 之外的变量 这一节。
Note:
magic_quotes_gpc 影响到了 parse_str() 这个函数的输出,和 PHP 用于填充 $_GET、 $_POST 及其他变量的机制一致。

39、print

    输出字符串

40、printf

    输出格式化字符串

41、quoted_printable_decode

    将quoted-printable字符串转换为8-bit字符串

42、quoted_printable_encode

    将8-bit字符串转换成quoted-printable字符串

43、quotemeta

    转义元字符集

44、rtrim

    删除字符串末端的空白字符(或者其他字符)
    string rtrim ( string $str [, string $character_mask ] )
该函数删除 str 末端的空白字符并返回。

不使用第二个参数,rtrim() 仅删除以下字符:

" " (ASCII 32 (0x20)),普通空白符。
"\t" (ASCII 9 (0x09)),制表符。
"\n" (ASCII 10 (0x0A)),换行符。
"\r" (ASCII 13 (0x0D)),回车符。
"\0" (ASCII 0 (0x00)),NUL 空字节符。
"\x0B" (ASCII 11 (0x0B)),垂直制表符。

45、setlocale

    设置地区信息

46、sha1_file

    计算文件的sha1散列值
    string sha1_file ( string $filename [, bool $raw_output = false ] )
利用» 美国安全散列算法 1,计算并返回由 filename 指定的文件的 sha1 散列值。该散列值是一个 40 字符长度的十六进制数字。

47、sha1

    计算字符串的sha1散列值
    string sha1 ( string $str [, bool $raw_output = false ] )
利用» 美国安全散列算法 1 计算字符串的 sha1 散列值。

48、similar_text

    计算两个字符串的相似度
    int similar_text ( string $first , string $second [, float &$percent ] )
两个字符串的相似程度计算依据 Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1) 的描述进行。注意该实现没有使用 Oliver 虚拟码中的堆栈,但是却进行了递归调用,这个做法可能会导致整个过程变慢或变快。也请注意,该算法的复杂度是 O(N**3),N 是最长字符串的长度。

49、soundex

    Calculate the soundex key of a string

50、sprintf

    return a a formatted string

51、sscanf

    根据指定格式解析输入的字符
        mixed sscanf ( string $str , string $format [, mixed &$... ] )
这个函数 sscanf() 输入类似 printf()。 sscanf() 读取字符串str 然后根据指定格式format解析, 格式的描述文档见 sprintf()。

指定的格式字符串中的任意空白匹配输入字符串的任意空白.也就是说即使是格式字符串中的一个制表符 \t 也能匹配输入 字符串中的一个单一空格字符

52、str_getcsv

    解析CSV字符串为一个数组

53、str_ireplace

    str_replace()的忽略大小写版本

54、str_pad

    使用另一个字符串填充字符串为指定长度
    <?php
$input = "Alien";
echo str_pad($input, 10);                      // 输出 "Alien     "
echo str_pad($input, 10, "-=", STR_PAD_LEFT);  // 输出 "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH);   // 输出 "__Alien___"
echo str_pad($input, 6 , "___");               // 输出 "Alien_"

?>

55、str_repeat

    重复一个字符串

56、str_replace

    子字符串替换
    mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。

如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 ereg_replace() 和 preg_replace()。

57、str_rot13

    对字符串执行ROT13转换

58、str_shuffle

    随机打乱一个字符串

59、str_split

    将字符串转换为数组

60、str_word_count

    返回字符串中单词的使用情况
    mixed str_word_count ( string $string [, int $format = 0 [, string $charlist ]] )
统计 string 中单词的数量。如果可选的参数 format 没有被指定,那么返回值是一个代表单词数量的整型数。如果指定了 format 参数,返回值将是一个数组,数组的内容则取决于 format 参数。format 的可能值和相应的输出结果如下所列。

对于这个函数的目的来说,单词的定义是一个与区域设置相关的字符串。这个字符串可以包含字母字符,也可以包含 "'" 和 "-" 字符(但不能以这两个字符开始)。

61、strcasecmp

    二进制安全比较字符串(不区分大小写)

62、strchr

    别名strstr()

63、strcmp

    二进制安全字符串比较
    Notice 比较区分大小写

64、strcoll

    基于区域设置的字符串比较

65、strcspn

    获取不匹配遮罩的起始字符串的长度
    int strcspn ( string $str1 , string $str2 [, int $start [, int $length ]] )
返回 str1 中,所有字符都不存在于 str2 范围的起始子字符串的长度。

66、strip_tags

    从字符串中去除HTML和PHP标记
    string strip_tags ( string $str [, string $allowable_tags ] )
该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。它使用与函数 fgetss() 一样的机制去除标记。

67、stripcslashes

    反引用一个使用addcslashes()转义的字符串

68、stripos

    查找字符串首次出现的位置(不区分大小写)
    int stripos ( string $haystack , string $needle [, int $offset = 0 ] )
返回在字符串 haystack 中 needle 首次出现的数字位置。

与 strpos() 不同,stripos() 不区分大小写。

69、stripslashes

    反引用一个引用字符串
    string stripslashes ( string $str )

反引用一个引用字符串。

Note:
如果 magic_quotes_sybase 项开启,反斜线将被去除,但是两个反斜线将会被替换成一个。
一个使用范例是使用 PHP 检测 magic_quotes_gpc 配置项的 开启情况(在 PHP 5.4之 前默认是开启的)并且你不需要将数据插入到一个需要转义的位置(例如数据库)。例如,你只是简单地将表单数据直接输出。

70、stristr

    strstr()函数的忽略大小写版本

71、strlen

    获取字符串长度

72、strnatcasecmp

    使用“自然顺序”算法比较字符串(不区分大小写)

73、strnatcmp

    使用自然排序算法比较字符串
    int strnatcmp ( string $str1 , string $str2 )
该函数实现了以人类习惯对数字型字符串进行排序的比较算法,这就是“自然顺序”。注意该比较区分大小写。

74、strncmp

    二进制安全比较字符串开头的若干个字符
    int strncmp ( string $str1 , string $str2 , int $len )
该函数与 strcmp() 类似,不同之处在于你可以指定两个字符串比较时使用的长度(即最大比较长度)。

注意该比较区分大小写。

75、strpbrk

    在字符串中查找一组字符的任何一个字符

76、strpos

    查找字符串首次出现的位置
    mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
返回 needle 在 haystack 中首次出现的数字位置。

77、strrchr

    查找指定字符在字符串中的最后一次出现
    string strrchr ( string $haystack , mixed $needle )
该函数返回 haystack 字符串中的一部分,这部分以 needle 的最后出现位置开始,直到 haystack 末尾。

78、strrev

    反转字符串

79、strripos

    计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
    int strripos ( string $haystack , string $needle [, int $offset = 0 ] )
以不区分大小写的方式查找指定字符串在目标字符串中最后一次出现的位置。与 strrpos() 不同,strripos() 不区分大小写。

80、strrpos

    计算指定字符串在目标字符串中最后一次出现的位置
    int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
返回字符串 haystack 中 needle 最后一次出现的数字位置。注意 PHP4 中,needle 只能为单个字符。如果 needle 被指定为一个字符串,那么将仅使用第一个字符。

81、strspn

    计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度

82、strstr

    查找字符串的首次出现
    string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。

Note:
该函数区分大小写。如果想要不区分大小写,请使用 stristr()。
Note:
如果你仅仅想确定 needle 是否存在于 haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。

83、strtok

    标记分隔字符串
    string strtok ( string $str , string $token )
string strtok ( string $token )
strtok() 将字符串 str 分割为若干子字符串,每个子字符串以 token 中的字符分割。这也就意味着,如果有个字符串是 "This is an example string",你可以使用空格字符将这句话分割成独立的单词。

注意仅第一次调用 strtok 函数时使用 string 参数。后来每次调用 strtok,都将只使用 token 参数,因为它会记住它在字符串 string 中的位置。如果要重新开始分割一个新的字符串,你需要再次使用 string 来调用 strtok 函数,以便完成初始化工作。注意可以在 token 参数中使用多个字符。字符串将被该参数中任何一个字符分割。

84、strtolower

    将字符串转化为小写

85、strtoupper

    将字符串转化为大写

86、strtr

    转换指定字符

87、substr_compare

    二进制安全比较字符串(从偏移位置比较指定长度)
    <?php
echo substr_compare("abcde", "bc", 1, 2); // 0
echo substr_compare("abcde", "de", -2, 2); // 0
echo substr_compare("abcde", "bcg", 1, 2); // 0
echo substr_compare("abcde", "BC", 1, 2, true); // 0
echo substr_compare("abcde", "bc", 1, 3); // 1
echo substr_compare("abcde", "cd", 1, 2); // -1
echo substr_compare("abcde", "abc", 5, 1); // warning
?>

88、substr_count

    计算字符串出现的次数
    <?php
$text = &#39;This is a test&#39;;
echo strlen($text); // 14

echo substr_count($text, &#39;is&#39;); // 2

// 字符串被简化为 &#39;s is a test&#39;,因此输出 1
echo substr_count($text, &#39;is&#39;, 3);

// 字符串被简化为 &#39;s i&#39;,所以输出 0
echo substr_count($text, &#39;is&#39;, 3, 3);

// 因为 5+10 > 14,所以生成警告
echo substr_count($text, &#39;is&#39;, 5, 10);


// 输出 1,因为该函数不计算重叠字符串
$text2 = &#39;gcdgcdgcd&#39;;
echo substr_count($text2, &#39;gcdgcd&#39;);
?>

89、substr_replace

    替换字符串的字串

90、substr

    返回字符串的字串

91、trim

    去除字符串首尾处的空白字符

92、ucfirst

    将字符串的首字母转换为大写

93、ucwords

    将字符串中每个单词的首字母转化为大写

94、vfprintf

    将格式化字符串写入流

95、vprintf

    输出格式化字符串

96、vsprintf

    返回格式化字符串

97、wordwrap

    打断字符串为指定数量的字符串

98、strncasecmp

    二进制安全比较字符串开头的若干个字符(不区分大小写)

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网! 

 相关推荐:

三种php递归函数的实现方法及实现数字的累加

在PHP中字符串中插入子字符串的方法

위 내용은 PHP 문자열에 대한 치트 시트 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.