时间:2021-07-01 10:21:17 帮助过:25人阅读
这篇文章主要介绍了关于PHP字符串中的速查表总结,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
以C语言风格使用反斜线转义字符串中的字符
使用反斜线引用字符串
<?php
$str = "Is your name O'reilly?";
// 输出: Is your name O\'reilly?
echo addslashes($str);
?>函数把包含数据的二进制字符串转换为十六进制值
rtrim()的别名
返回指定的字符,此函数与ord()是互补的
将字符串分隔成小块
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));
?> 将字符由一种Cyrillic字符转换成另一种
string convert_cyr_string ( string $str , string $from , string $to )
此函数将给定的字符串从一种 Cyrillic 字符转换成另一种,返回转换之后的字符串。解码一个uuencode编码的字符串
使用uuencode编码一个字符串
string convert_uuencode ( string $data )convert_uuencode() 使用 uuencode 算法对一个字符串进行编码。
uuencode 算法会将所有(含二进制)字符串转化为可输出的字符, 并且可以被安全的应用于网络传输。使用 uuencode 编码后的数据 将会比源数据大35%左右
返回字符串所用字符的信息
根据不同的 mode,count_chars() 返回下列不同的结果:
0 - 以所有的每个字节值作为键名,出现次数作为值的数组。
1 - 与 0 相同,但只列出出现次数大于零的字节值。
2 - 与 0 相同,但只列出出现次数等于零的字节值。
3 - 返回由所有使用了的字节值组成的字符串。
4 - 返回由所有未使用的字节值组成的字符串。计算一个字符串的crc32多项式
单向字符串散列
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=<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 将会被转换为最接近的值。
Note:
从 PHP 5.3.0 起,PHP 包含了它自己的实现,并将在系统缺乏相应算法支持的时候使用它自己的实现。输出一个或多个字符串 输出所有参数、不会换行,它是一个语言结构。
使用一个字符串分隔另一个字符串
array explode ( string $delimiter , string $string [, int $limit ] )
此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。 将格式化的字符串写入到流
int fprintf ( resource $handle , string $format [, mixed $args [, mixed $... ]] )
写入一个根据 format 格式化后的字符串到 由 handle 句柄打开的流中。返回使用htmlspecialchars()和htmlentities()后的转化表
将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文
将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew),并且转换换行符
转换十六进制字符串为二进制字符串
Convert all HTML entities to their applicable characters
Convert all applicable characters to HTML entities
将特殊的HTML实体转换回普通字符
Convert special characters to HTML entities
将一个一维数组的值转化为字符串
string implode ( string $glue , array $pieces )string implode ( array $pieces )
用 glue 将一维数组的值连接为一个字符串。
Note: 因为历史原因,implode() 可以接收两种参数顺序,但是 explode() 不行。不过按文档中的顺序可以避免混淆。
别名implode()
使一个字符串的第一个字符小写
string lcfirst ( string $str )
返回str的第一个字符小写了的字符串。如果str的第一个字符是字母,则将其转换为小写。
需要注意的是“字母”是由当前语言区域决定的。比如,在默认的“C”区域像日耳曼语系中的元音变音a (ä) 将不会被转换。 计算两个字符串之间的编辑距离
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所需要的操作次数。
第二种变体将采用三个额外的参数来定义插入、替换和删除操作的次数。此变体比第一种更加通用和适应,但效率不高。Get numeric formatting information
删除字符串开头的空白字符
string ltrim ( string $str [, string $character_mask ] )
删除字符串开头的空白字符(或其他字符) 计算指定文件的MD5散列值
string md5_file ( string $filename [, bool $raw_output = false ] )
使用 » RSA 数据安全公司的 MD5 报文算法计算 filename 文件的 MD5 散列值并返回。该散列值为 32 字符的十六进制数字。 计算字符串的MD5散列值
string md5 ( string $str [, bool $raw_output = false ] )
使用 » RSA 数据安全公司的 MD5 报文算法计算 str 的 MD5 散列值。 Calculate the metaphone key of a string
<?php
var_dump(metaphone('programming'));
var_dump(metaphone('programmer'));
?>
以上例程的输出类似于:
string(7) "PRKRMNK"
string(6) "PRKRMR" 将数组格式化成货币字符串
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)。Query language and locale information
在字符串所有新行之前插入HTML换行标记
string nl2br ( string $string [, bool $is_xhtml = true ] )
在字符串 string 所有新行之前插入 '<br />' 或 '<br>',并返回。 以千位分隔符方式格式化一个数字
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返回字符的ASCII码值
将字符串解析成多个变量
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 及其他变量的机制一致。输出字符串
输出格式化字符串
将quoted-printable字符串转换为8-bit字符串
将8-bit字符串转换成quoted-printable字符串
转义元字符集
删除字符串末端的空白字符(或者其他字符)
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)),垂直制表符。设置地区信息
计算文件的sha1散列值
string sha1_file ( string $filename [, bool $raw_output = false ] )
利用» 美国安全散列算法 1,计算并返回由 filename 指定的文件的 sha1 散列值。该散列值是一个 40 字符长度的十六进制数字。 计算字符串的sha1散列值
string sha1 ( string $str [, bool $raw_output = false ] )
利用» 美国安全散列算法 1 计算字符串的 sha1 散列值。 计算两个字符串的相似度
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 是最长字符串的长度。Calculate the soundex key of a string
return a a formatted string
根据指定格式解析输入的字符
mixed sscanf ( string $str , string $format [, mixed &$... ] )
这个函数 sscanf() 输入类似 printf()。 sscanf() 读取字符串str 然后根据指定格式format解析, 格式的描述文档见 sprintf()。
指定的格式字符串中的任意空白匹配输入字符串的任意空白.也就是说即使是格式字符串中的一个制表符 \t 也能匹配输入 字符串中的一个单一空格字符解析CSV字符串为一个数组
str_replace()的忽略大小写版本
使用另一个字符串填充字符串为指定长度
<?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_"?>
重复一个字符串
子字符串替换
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。
如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 ereg_replace() 和 preg_replace()。对字符串执行ROT13转换
随机打乱一个字符串
将字符串转换为数组
返回字符串中单词的使用情况
mixed str_word_count ( string $string [, int $format = 0 [, string $charlist ]] )
统计 string 中单词的数量。如果可选的参数 format 没有被指定,那么返回值是一个代表单词数量的整型数。如果指定了 format 参数,返回值将是一个数组,数组的内容则取决于 format 参数。format 的可能值和相应的输出结果如下所列。
对于这个函数的目的来说,单词的定义是一个与区域设置相关的字符串。这个字符串可以包含字母字符,也可以包含 "'" 和 "-" 字符(但不能以这两个字符开始)。二进制安全比较字符串(不区分大小写)
别名strstr()
二进制安全字符串比较
Notice 比较区分大小写基于区域设置的字符串比较
获取不匹配遮罩的起始字符串的长度
int strcspn ( string $str1 , string $str2 [, int $start [, int $length ]] )
返回 str1 中,所有字符都不存在于 str2 范围的起始子字符串的长度。 从字符串中去除HTML和PHP标记
string strip_tags ( string $str [, string $allowable_tags ] )
该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。它使用与函数 fgetss() 一样的机制去除标记。反引用一个使用addcslashes()转义的字符串
查找字符串首次出现的位置(不区分大小写)
int stripos ( string $haystack , string $needle [, int $offset = 0 ] )
返回在字符串 haystack 中 needle 首次出现的数字位置。
与 strpos() 不同,stripos() 不区分大小写。 反引用一个引用字符串
string stripslashes ( string $str )反引用一个引用字符串。
Note: 如果 magic_quotes_sybase 项开启,反斜线将被去除,但是两个反斜线将会被替换成一个。 一个使用范例是使用 PHP 检测 magic_quotes_gpc 配置项的 开启情况(在 PHP 5.4之 前默认是开启的)并且你不需要将数据插入到一个需要转义的位置(例如数据库)。例如,你只是简单地将表单数据直接输出。
strstr()函数的忽略大小写版本
获取字符串长度
使用“自然顺序”算法比较字符串(不区分大小写)
使用自然排序算法比较字符串
int strnatcmp ( string $str1 , string $str2 )
该函数实现了以人类习惯对数字型字符串进行排序的比较算法,这就是“自然顺序”。注意该比较区分大小写。 二进制安全比较字符串开头的若干个字符
int strncmp ( string $str1 , string $str2 , int $len )
该函数与 strcmp() 类似,不同之处在于你可以指定两个字符串比较时使用的长度(即最大比较长度)。
注意该比较区分大小写。在字符串中查找一组字符的任何一个字符
查找字符串首次出现的位置
mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
返回 needle 在 haystack 中首次出现的数字位置。 查找指定字符在字符串中的最后一次出现
string strrchr ( string $haystack , mixed $needle )
该函数返回 haystack 字符串中的一部分,这部分以 needle 的最后出现位置开始,直到 haystack 末尾。反转字符串
计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
int strripos ( string $haystack , string $needle [, int $offset = 0 ] )
以不区分大小写的方式查找指定字符串在目标字符串中最后一次出现的位置。与 strrpos() 不同,strripos() 不区分大小写。 计算指定字符串在目标字符串中最后一次出现的位置
int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
返回字符串 haystack 中 needle 最后一次出现的数字位置。注意 PHP4 中,needle 只能为单个字符。如果 needle 被指定为一个字符串,那么将仅使用第一个字符。计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度
查找字符串的首次出现
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。
Note:
该函数区分大小写。如果想要不区分大小写,请使用 stristr()。
Note:
如果你仅仅想确定 needle 是否存在于 haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。 标记分隔字符串
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 参数中使用多个字符。字符串将被该参数中任何一个字符分割。将字符串转化为小写
将字符串转化为大写
转换指定字符
二进制安全比较字符串(从偏移位置比较指定长度)
<?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
?> 计算字符串出现的次数
<?php
$text = 'This is a test';
echo strlen($text); // 14
echo substr_count($text, 'is'); // 2
// 字符串被简化为 's is a test',因此输出 1
echo substr_count($text, 'is', 3);
// 字符串被简化为 's i',所以输出 0
echo substr_count($text, 'is', 3, 3);
// 因为 5+10 > 14,所以生成警告
echo substr_count($text, 'is', 5, 10);
// 输出 1,因为该函数不计算重叠字符串
$text2 = 'gcdgcdgcd';
echo substr_count($text2, 'gcdgcd');
?>替换字符串的字串
返回字符串的字串
去除字符串首尾处的空白字符
将字符串的首字母转换为大写
将字符串中每个单词的首字母转化为大写
将格式化字符串写入流
输出格式化字符串
返回格式化字符串
打断字符串为指定数量的字符串
二进制安全比较字符串开头的若干个字符(不区分大小写)
以C语言风格使用反斜线转义字符串中的字符
使用反斜线引用字符串
<?php
$str = "Is your name O'reilly?";
// 输出: Is your name O\'reilly?
echo addslashes($str);?>
函数把包含数据的二进制字符串转换为十六进制值
rtrim()的别名
返回指定的字符,此函数与ord()是互补的
将字符串分隔成小块
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));
?> 将字符由一种Cyrillic字符转换成另一种
string convert_cyr_string ( string $str , string $from , string $to )
此函数将给定的字符串从一种 Cyrillic 字符转换成另一种,返回转换之后的字符串。解码一个uuencode编码的字符串
使用uuencode编码一个字符串
string convert_uuencode ( string $data )convert_uuencode() 使用 uuencode 算法对一个字符串进行编码。
uuencode 算法会将所有(含二进制)字符串转化为可输出的字符, 并且可以被安全的应用于网络传输。使用 uuencode 编码后的数据 将会比源数据大35%左右
返回字符串所用字符的信息
根据不同的 mode,count_chars() 返回下列不同的结果:
0 - 以所有的每个字节值作为键名,出现次数作为值的数组。
1 - 与 0 相同,但只列出出现次数大于零的字节值。
2 - 与 0 相同,但只列出出现次数等于零的字节值。
3 - 返回由所有使用了的字节值组成的字符串。
4 - 返回由所有未使用的字节值组成的字符串。计算一个字符串的crc32多项式
单向字符串散列
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=<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 将会被转换为最接近的值。
Note:
从 PHP 5.3.0 起,PHP 包含了它自己的实现,并将在系统缺乏相应算法支持的时候使用它自己的实现。输出一个或多个字符串 输出所有参数、不会换行,它是一个语言结构。
使用一个字符串分隔另一个字符串
array explode ( string $delimiter , string $string [, int $limit ] )
此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。 将格式化的字符串写入到流
int fprintf ( resource $handle , string $format [, mixed $args [, mixed $... ]] )
写入一个根据 format 格式化后的字符串到 由 handle 句柄打开的流中。返回使用htmlspecialchars()和htmlentities()后的转化表
将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文
将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew),并且转换换行符
转换十六进制字符串为二进制字符串
Convert all HTML entities to their applicable characters
Convert all applicable characters to HTML entities
将特殊的HTML实体转换回普通字符
Convert special characters to HTML entities
将一个一维数组的值转化为字符串
string implode ( string $glue , array $pieces )string implode ( array $pieces )
用 glue 将一维数组的值连接为一个字符串。
Note: 因为历史原因,implode() 可以接收两种参数顺序,但是 explode() 不行。不过按文档中的顺序可以避免混淆。
别名implode()
使一个字符串的第一个字符小写
string lcfirst ( string $str )
返回str的第一个字符小写了的字符串。如果str的第一个字符是字母,则将其转换为小写。
需要注意的是“字母”是由当前语言区域决定的。比如,在默认的“C”区域像日耳曼语系中的元音变音a (ä) 将不会被转换。 计算两个字符串之间的编辑距离
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所需要的操作次数。
第二种变体将采用三个额外的参数来定义插入、替换和删除操作的次数。此变体比第一种更加通用和适应,但效率不高。Get numeric formatting information
删除字符串开头的空白字符
string ltrim ( string $str [, string $character_mask ] )
删除字符串开头的空白字符(或其他字符) 计算指定文件的MD5散列值
string md5_file ( string $filename [, bool $raw_output = false ] )
使用 » RSA 数据安全公司的 MD5 报文算法计算 filename 文件的 MD5 散列值并返回。该散列值为 32 字符的十六进制数字。 计算字符串的MD5散列值
string md5 ( string $str [, bool $raw_output = false ] )
使用 » RSA 数据安全公司的 MD5 报文算法计算 str 的 MD5 散列值。 Calculate the metaphone key of a string
<?php
var_dump(metaphone('programming'));
var_dump(metaphone('programmer'));
?>
以上例程的输出类似于:
string(7) "PRKRMNK"
string(6) "PRKRMR" 将数组格式化成货币字符串
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)。Query language and locale information
在字符串所有新行之前插入HTML换行标记
string nl2br ( string $string [, bool $is_xhtml = true ] )
在字符串 string 所有新行之前插入 '<br />' 或 '<br>',并返回。 以千位分隔符方式格式化一个数字
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返回字符的ASCII码值
将字符串解析成多个变量
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 及其他变量的机制一致。输出字符串
输出格式化字符串
将quoted-printable字符串转换为8-bit字符串
将8-bit字符串转换成quoted-printable字符串
转义元字符集
删除字符串末端的空白字符(或者其他字符)
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)),垂直制表符。设置地区信息
计算文件的sha1散列值
string sha1_file ( string $filename [, bool $raw_output = false ] )
利用» 美国安全散列算法 1,计算并返回由 filename 指定的文件的 sha1 散列值。该散列值是一个 40 字符长度的十六进制数字。 计算字符串的sha1散列值
string sha1 ( string $str [, bool $raw_output = false ] )
利用» 美国安全散列算法 1 计算字符串的 sha1 散列值。 计算两个字符串的相似度
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 是最长字符串的长度。Calculate the soundex key of a string
return a a formatted string
根据指定格式解析输入的字符
mixed sscanf ( string $str , string $format [, mixed &$... ] )
这个函数 sscanf() 输入类似 printf()。 sscanf() 读取字符串str 然后根据指定格式format解析, 格式的描述文档见 sprintf()。
指定的格式字符串中的任意空白匹配输入字符串的任意空白.也就是说即使是格式字符串中的一个制表符 \t 也能匹配输入 字符串中的一个单一空格字符解析CSV字符串为一个数组
str_replace()的忽略大小写版本
使用另一个字符串填充字符串为指定长度
<?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_"?>
重复一个字符串
子字符串替换
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。
如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 ereg_replace() 和 preg_replace()。对字符串执行ROT13转换
随机打乱一个字符串
将字符串转换为数组
返回字符串中单词的使用情况
mixed str_word_count ( string $string [, int $format = 0 [, string $charlist ]] )
统计 string 中单词的数量。如果可选的参数 format 没有被指定,那么返回值是一个代表单词数量的整型数。如果指定了 format 参数,返回值将是一个数组,数组的内容则取决于 format 参数。format 的可能值和相应的输出结果如下所列。
对于这个函数的目的来说,单词的定义是一个与区域设置相关的字符串。这个字符串可以包含字母字符,也可以包含 "'" 和 "-" 字符(但不能以这两个字符开始)。二进制安全比较字符串(不区分大小写)
别名strstr()
二进制安全字符串比较
Notice 比较区分大小写基于区域设置的字符串比较
获取不匹配遮罩的起始字符串的长度
int strcspn ( string $str1 , string $str2 [, int $start [, int $length ]] )
返回 str1 中,所有字符都不存在于 str2 范围的起始子字符串的长度。 从字符串中去除HTML和PHP标记
string strip_tags ( string $str [, string $allowable_tags ] )
该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。它使用与函数 fgetss() 一样的机制去除标记。反引用一个使用addcslashes()转义的字符串
查找字符串首次出现的位置(不区分大小写)
int stripos ( string $haystack , string $needle [, int $offset = 0 ] )
返回在字符串 haystack 中 needle 首次出现的数字位置。
与 strpos() 不同,stripos() 不区分大小写。 反引用一个引用字符串
string stripslashes ( string $str )反引用一个引用字符串。
Note: 如果 magic_quotes_sybase 项开启,反斜线将被去除,但是两个反斜线将会被替换成一个。 一个使用范例是使用 PHP 检测 magic_quotes_gpc 配置项的 开启情况(在 PHP 5.4之 前默认是开启的)并且你不需要将数据插入到一个需要转义的位置(例如数据库)。例如,你只是简单地将表单数据直接输出。
strstr()函数的忽略大小写版本
获取字符串长度
使用“自然顺序”算法比较字符串(不区分大小写)
使用自然排序算法比较字符串
int strnatcmp ( string $str1 , string $str2 )
该函数实现了以人类习惯对数字型字符串进行排序的比较算法,这就是“自然顺序”。注意该比较区分大小写。 二进制安全比较字符串开头的若干个字符
int strncmp ( string $str1 , string $str2 , int $len )
该函数与 strcmp() 类似,不同之处在于你可以指定两个字符串比较时使用的长度(即最大比较长度)。
注意该比较区分大小写。在字符串中查找一组字符的任何一个字符
查找字符串首次出现的位置
mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
返回 needle 在 haystack 中首次出现的数字位置。 查找指定字符在字符串中的最后一次出现
string strrchr ( string $haystack , mixed $needle )
该函数返回 haystack 字符串中的一部分,这部分以 needle 的最后出现位置开始,直到 haystack 末尾。反转字符串
计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
int strripos ( string $haystack , string $needle [, int $offset = 0 ] )
以不区分大小写的方式查找指定字符串在目标字符串中最后一次出现的位置。与 strrpos() 不同,strripos() 不区分大小写。 计算指定字符串在目标字符串中最后一次出现的位置
int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
返回字符串 haystack 中 needle 最后一次出现的数字位置。注意 PHP4 中,needle 只能为单个字符。如果 needle 被指定为一个字符串,那么将仅使用第一个字符。计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度
查找字符串的首次出现
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。
Note:
该函数区分大小写。如果想要不区分大小写,请使用 stristr()。
Note:
如果你仅仅想确定 needle 是否存在于 haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。 标记分隔字符串
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 参数中使用多个字符。字符串将被该参数中任何一个字符分割。将字符串转化为小写
将字符串转化为大写
转换指定字符
二进制安全比较字符串(从偏移位置比较指定长度)
<?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
?> 计算字符串出现的次数
<?php
$text = 'This is a test';
echo strlen($text); // 14
echo substr_count($text, 'is'); // 2
// 字符串被简化为 's is a test',因此输出 1
echo substr_count($text, 'is', 3);
// 字符串被简化为 's i',所以输出 0
echo substr_count($text, 'is', 3, 3);
// 因为 5+10 > 14,所以生成警告
echo substr_count($text, 'is', 5, 10);
// 输出 1,因为该函数不计算重叠字符串
$text2 = 'gcdgcdgcd';
echo substr_count($text2, 'gcdgcd');
?>替换字符串的字串
返回字符串的字串
去除字符串首尾处的空白字符
将字符串的首字母转换为大写
将字符串中每个单词的首字母转化为大写
将格式化字符串写入流
输出格式化字符串
返回格式化字符串
打断字符串为指定数量的字符串
二进制安全比较字符串开头的若干个字符(不区分大小写)
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
三种php递归函数的实现方法及实现数字的累加
在PHP中字符串中插入子字符串的方法
以上就是关于PHP字符串中的速查表总结的详细内容,更多请关注Gxl网其它相关文章!