首页 > C风格编程语言 > PHP编程技术 > PHP中的字符串函数(String Functions)
2008
10-28

PHP中的字符串函数(String Functions)

手中的PHP手册不知道具体是哪个版本的,只知道是PHP5.1的,有94个字符串处理函数,真的是有够多,下面开始按照从简单到复杂的顺序介绍这些函数的使用功能和使用方法:


先给出一个总表:
addcslashes — 为字符串里面的部分字符添加反斜线转义字符
addslashes — 用指定的方式对字符串里面的字符进行转义
bin2hex — 将二进制数据转换成十六进制表示
chop — rtrim() 的别名函数
chr — 返回一个字符的ASCII码
chunk_split — 按一定的字符长度将字符串分割成小块
convert_cyr_string — 将斯拉夫语字符转换为别的字符
convert_uudecode — 解密一个字符串
convert_uuencode — 加密一个字符串
count_chars — 返回一个字符串里面的字符使用信息
crc32 — 计算一个字符串的crc32多项式
crypt — 单向散列加密函数
echo — 用以显示一些内容
explode — 将一个字符串用分割符转变为一数组形式
fprintf — 按照要求对数据进行返回,并直接写入文档流
get_html_translation_table — 返回可以转换的HTML实体
hebrev — 将Hebrew编码的字符串转换为可视的文本
hebrevc — 将Hebrew编码的字符串转换为可视的文本
html_entity_decode — htmlentities ()函数的反函数,将HTML实体转换为字符
htmlentities — 将字符串中一些字符转换为HTML实体
htmlspecialchars_decode — htmlspecialchars()函数的反函数,将HTML实体转换为字符
htmlspecialchars — 将字符串中一些字符转换为HTML实体
implode — 将数组用特定的分割符转变为字符串
join — 将数组转变为字符串,implode()函数的别名
levenshtein — 计算两个词的差别大小
localeconv — 获取数字相关的格式定义
ltrim — 去除字符串左侧的空白或者指定的字符
md5_file — 将一个文件进行MD5算法加密
md5 — 将一个字符串进行MD5算法加密
metaphone — 判断一个字符串的发音规则
money_format — 按照参数对数字进行格式化的输出
nl_langinfo — 查询语言和本地信息
nl2br — 将字符串中的换行符“\n”替换成“<br />”
number_format — 按照参数对数字进行格式化的输出
ord — 将一个ASCII码转换为一个字符
parse_str — 把一定格式的字符串转变为变量和值
print — 用以输出一个单独的值
printf — 按照要求对数据进行显示
quoted_printable_decode — 将一个字符串加密为一个8位的二进制字符串
quotemeta — 对若干个特定字符进行转义
rtrim — 去除字符串右侧的空白或者指定的字符
setlocale — 设置关于数字,日期等等的本地格式
sha1_file — 将一个文件进行SHA1算法加密
sha1 — 将一个字符串进行SHA1算法加密
similar_text — 比较两个字符串,返回系统认为的相似字符个数
soundex — 判断一个字符串的发音规则
sprintf — 按照要求对数据进行返回,但是不输出
sscanf — 可以对字符串进行格式化
str_ireplace — 像str_replace()函数一样匹配和替换字符串,但是不区分大小写
str_pad — 对字符串进行两侧的补白
str_repeat — 对字符串进行重复组合
str_replace — 匹配和替换字符串
str_rot13 — 将字符串进行ROT13加密处理
str_shuffle — 对一个字符串里面的字符进行随机排序
str_split — 将一个字符串按照字符间距分割为一个数组
str_word_count — 获取字符串里面的英文单词信息
strcasecmp — 对字符串进行大小比较,不区分大小写
strchr — 通过比较返回一个字符串的部分strstr()函数的别名
strcmp — 对字符串进行大小比较
strcoll – 根据本地设置对字符串进行大小比较
strcspn — 返回字符连续非匹配长度的值
strip_tags — 去除一个字符串里面的HTML和PHP代码
stripcslashes — 反转义addcslashes()函数转义处理过的字符串
stripos — 查找并返回首个匹配项的位置,匹配不区分大小写
stripslashes — 反转义addslashes()函数转义处理过的字符串
stristr — 通过比较返回一个字符串的部分,比较时不区分大小写
strlen — 获取一个字符串的编码长度
strnatcasecmp — 使用自然排序法对字符串进行大小比较,不区分大小写
strnatcmp — 使用自然排序法对字符串进行大小比较
strncasecmp — 对字符串的前N个字符进行大小比较,不区分大小写
strncmp — 对字符串的前N个字符进行大小比较
strpbrk — 通过比较返回一个字符串的部分
strpos — 查找并返回首个匹配项的位置
strrchr — 通过从后往前比较返回一个字符串的部分
strrev — 将字符串里面的所有字母反向排列
strripos — 从后往前查找并返回首个匹配项的位置,匹配不区分大小写
strrpos – 从后往前查找并返回首个匹配项的位置
strspn — 匹配并返回字符连续出现长度的值
strstr — 通过比较返回一个字符串的部分
strtok — 用指定的若干个字符来分割字符串
strtolower — 将字符串转变为小写
strtoupper –将字符串转变为大写
strtr — 对字符串比较替换
substr_compare — 对字符串进行截取后的比较
substr_count — 计算字符串中某字符段的出现次数
substr_replace — 对字符串中的部分字符进行替换
substr — 对字符串进行截取
trim — 去除字符串两边的空白或者指定的字符
ucfirst — 将所给字符串的第一个字母转换为大写
ucwords — 将所给字符串的每一个英文单词的第一个字母变成大写
vfprintf — 按照要求对数据进行返回,并直接写入文档流
vprintf — 按照要求对数据进行显示
vsprintf — 按照要求对数据进行返回,但是不输出
wordwrap — 按照一定的字符长度分割字符串


strtolower()函数把所有字符变成小写,strtoupper()函数把所有字符变成大写,ucfirst()函数将所给字符串的第一个字母转换为大写,ucwords()函数将所给字符串的每一个英文单词的第一个字母变成大写。
ucfirst()只处理字符串的首个字符,ucwords()只处理每个单词的首字母(以空格来界定是否是单词,“today!Hi”、“today.Hi” 会被认为是一个单词),对于其余字母的大小写状态并不改变。


<?php
echo strtolower(“ABCD”);//显示 abcd
echo strtoupper(“abcd”);//显示 ABCD
echo ucfirst(“what a beautiful day today!”);//显示 What a beautiful day today!
echo ucwords(“what a beautiful day today!”);//显示 What A Beautiful Day Today!
?>
trim()函数去除字符串两边的空白或者指定的字符,ltrim()函数去除字符串左侧的空白或者指定的字符,rtrim()函数去除字符串右侧的空白或者指定的字符,chop()函数和rtrim()函数功能相同,这四个函数都不支持UFT-8中文字符。


<?php
echo trim(“what a beautiful day today!”,”! adlotwy”);//显示 hat a beautifu
echo ltrim(“what a beautiful day today!”,”! adlotwy”);//显示 hat a beautiful day today!
echo rtrim(“what a beautiful day today!”,”! adlotwy”);//显示 what a beautifu
echo chop(“what a beautiful day today!”,”! adlotwy”);//显示 what a beautifu
?>
echo()函数用以显示一些内容,可以使用<<《What is the difference between echo and print》 查看两者的差别。echo() 和 print()后面的小括号,可加可不加。


<?php
$temp = “都”;
echo $temp;//显示“都”
echo <<<END


$temp



END;//显示“大家都好吗?”
echo “大家”,$temp,”好!”;//显示“大家都好”


$temp = “都”;
print $temp; //显示“都”
print <<<END


$temp



END;//显示“大家都好吗?”
?>
printf()函数可以按照要求对数据进行显示,该函数的功能异常强大,即可以让值在不同的字符格式和进制之间转换,还可以实现字符补白(pad)和截取等功能。sprintf()函数,fprintf()函数的功能和printf()函数完全一样,只不过sprintf()函数是返回结果而不是直接输出,fprintf()必须用在将输出写入文档流的时候。下面仅以printf()函数举例:
在printf()函数的第一个参数中:
% – 转义字符(在%开始,字母结束的格式定义内部,使用“’”进行转义)
b – 二进制格式输出
c – 将ASCII值转变为对应的值输出
d – 有符号的十进制数输出(整数)
e – 科学计数法输出
u – 无符号的十进制数输出(正数)
f – 浮点格式输出(locale aware)
F – 浮点格式输出(non-locale aware)
o – 八进制格式输出
s – 字符串格时输出
x – 十六进制格式输出(字母小写)
X – 十六进制格式输出(字母大写)


<?php
$n =  43951789;
$u = -43951789;
$c = 65; // ‘A’的ASCII值为65
printf(“%b”, $n); //显示10100111101010011010101101
printf(“%c”, $c); //显示A
printf(“%d”, $n); //显示43951789
printf(“%e”, $n); //显示4.39518e+7
printf(“%u”, $n); //显示43951789
printf(“%u”, $u); //显示4251015507
printf(“%f”, $n); //显示43951789.000000
printf(“%F”, $n); //显示43951789.000000
printf(“%o”, $n); //显示247523255
printf(“%s”, $n); //显示43951789
printf(“%x”, $n); //显示29ea6ad
printf(“%X”, $n); //显示29EA6AD
printf(“%+d”, $n); //显示+43951789
printf(“%+d”, $u); //显示-43951789
?>
printf的第一个参数还内置了类似正则的功能:
1、第一位是可选的一个“+”,这个符号只对数字格式的输出有效,因为如果是负数的话,前面会有一个“-”,有时候会需要在正数前面加一个“+”,但是PHP默认是隐去“+”号显示的,所以需要在前面加一个“+”输出“+”号
2、第二位是可选的填充字符,用这个字符来起到填充空白的左右,功能类似str_pad()函数,保留字符可以用“’”转义
3、第三位表示填充的方向,是可选的,“+”是默认值,表示在左侧填充,“-”表示在右侧填充
4、第四位表示填充完成后的长度,也是可选的,没有这个参数就表示不进行填充
5、第五位可选参数,如果输出是浮点数,可以控制小数点后面的个数,如果是输出字符串,则可以用来截取字符串的长度,使用时为了和前面的参数区分,需要用“.”隔开


<?php
$t = ‘many monkeys’;
$n = 1213;
printf(“%+d”,$n); // 1、显示 +1213
printf(“%010d”,$n); // 2、显示000001213
printf(“%+’#10d”,$n); // 2、显示 #####+1213
printf(“%+’#-10d”,$n); // 3、显示 +1213#####
printf(“%.2f”,$n); // 5、显示 1213.00
printf(“%.7s”,$t); // 5、显示 many mo
?>
了解了上面这些之后,让我们看printf()函数的使用方法,其实就是将接受的从第二个参数以后的所有参数一个一个的在第一个参数中需要转换的地方输出,如果参数次序被打乱,就需要使用“2\$”这样的字符来表明变量的位置。


<?php
$num = “tree”;
$location = 10;
$format1 = “The %s contains %d monkeys”;
printf($format1, $num, $location);
//显示 The tree contains 10 monkeys
$format2 = “The %s contains %d monkeys”;
printf($format2, $location, $num);
//显示 The tree contains 10 monkeys
?>
vprintf()函数、vsprintf()函数、vfprintf()函数三个函数的功能和上面的printf()函数、sprintf()函数、fprintf()的功能一样,vprintf()函数直接输出,vsprintf()函数返回但是不输出,vfprintf()函数直接将结果输出到文档流,区别就是这三个函数接受的参数都是数组形式的,而不是一个一个的变量。
这里只举vprintf()函数的例子:


<?php
$num = “tree”;
$location = 10;
$argu1 = array(“tree”,10);
$argu2 = array(10,”tree”);
$format1 = “The %s contains %d monkeys”;
printf($format1, $num, $location);
// 显示 The tree contains 10 monkeys
$format1 = “The %s contains %d monkeys”;
vprintf($format1, $argu1);
// 显示 The tree contains 10 monkeys
$format2 = “The %2\$s contains %1\$d monkeys”;
vprintf($format2, $argu2);
// 显示 The tree contains 10 monkeys
?>
number_format()函数可以按照参数对数字进行格式化的输出,number_format()函数最多有4个参数,第一个参数是输出的数字,第二个参数表示保留几位小数,第三个参数和第四个参数必须同时使用(就是说不能只用第三个参数,而不使用第四个参数),分别表示小数点的样式和千分符的样式,默认分别为“.”和“,”。


<?php
$num = 1234.56;
$new_num = number_format($num, 3, “.”, “-”);
echo $new_num; // 显示 1-234.560
?>
money_format()函数需要C里面的strfmon()函数支持,所以需要系统能够提供C函数库,很显然,windows系统无法支持此功能,所以在windows下面的PHP环境不支持money_format()函数,此函数的介绍以后再补充:(


sscanf()函数可以对字符串进行格式化,第一个参数表示需要处理的字符,第二个参数表示变量匹配的规则(匹配规则请参照上面的printf()函数),后面的参数可选,分别对应需要赋值的变量,如果仅仅只有2个参数,那么所有的变量值将以一个数组的形式返回。在下面的例子中,“%s”的匹配是贪婪的,所以在使用时要注意。


<?php
$mandate = “January 01 2000″;
list($month, $day, $year) = sscanf($mandate, “%s %d %d”);
echo “$year-” .$month. “-$day”;// 显示 2000-January-1
?>
str_replace()函数可以匹配和替换字符串,第一个参数表示需要匹配的项,第二个参数表示替换的项,第三个参数表示处理的字符串。第四个参数可选,将一个变量赋值为匹配的次数,前两个参数也可以是数组形式的。str_ireplace()函数的功能和str_replace()函数类似,只不过在匹配的时候str_ireplace()函数会忽略大小写。


<?php
$str1 = str_replace(“world”, “body”, “hello world world”);
echo $str1;// 显示 hello body body
$str1 = str_ireplace(“WORLD”, “body”, “hello world world”);
echo $str1;// 显示 hello body body


$phrase  = “You should eat fruits, vegetables, and fiber every day.”;
$healthy = array(“fruits”, “vegetables”, “fiber”);
$yummy   = array(“pizza”, “beer”, “ice cream”);
$newphrase = str_replace($healthy, $yummy, $phrase, $count);
echo $newphrase;// 显示 You should eat pizza, beer, and ice cream every day.
echo $count; // 显示 3
?>
strtr()函数的作用是对字符串替换,strtr()函数有两种使用方法,第一种使用三个参数,替换时会将第二个参数的字符串替换为第三个参数的字符串(如果两个字符串参数的长度不一致,则教长的那个字符串将会被截断),第二种方法使用两个参数,第二个参数是一个准备进行替换处理的数组。


<?php
$trans = strtr(“hello world”, “world”, “body”);
echo $trans;//显示 heyyo bodyd (w=>b,o=>o,r=>d,l=>y)
$arr = array(“hello” => “hi”, “hi” => “hello”);
$trans = strtr(“hi all, I said hello”, $arr);
echo $trans;//显示 hello all, I said hi
?>
strstr()函数通过比较返回一个字符串的部分。函数有两个参数,第一个参数表示处理的字符串,第二个参数表示匹配项,返回结果为从匹配位置开始到最后的一个字符串,如果没有匹配,则返回false。strchr()函数是strstr()函数的别名,功能和使用方法完全一样。strrchr()函数的功能和strstr()函数类似,区别是strrchr()函数是从后向前匹配的,stristr()函数的功能和strstr()函数一样,但是匹配是不区分字母的大小写。strpbrk()的功能和strstr()函数类似,是在一个字母串里面找出第一个匹配项,返回以后的结果。


<?php
$email = ‘user@example.com’;
$domain = strstr($email, ‘@’);
echo $domain; // 显示 @example.com
$exam = strrchr($email, ‘e’);
echo $exam; // 显示 e.com
$exam = stristr($email, ‘EX’);
echo $exam; // 显示 example.com
$exam = strpbrk($email, ‘pe’);
echo $exam; // 显示 er@example.com
?>
strpos()函数查找并返回首个匹配项的位置,第一个参数表示处理的字符串,第二个参数表示匹配项,第三个参数可选,表示开始执行查找的位置。stripos()函数的功能和strpos()函数类似,区别是匹配的时候不会区分大小写。strrpos()函数和strpos()函数功能类似,区别是从后往前匹配,strripos()函数的功能和strrpos()函数类似,区别是不区分大小写。strrpos()函数在PHP4中只支持单个字母的查找,如果参数是字符串,则截取第一个字母,PHP4不支持strripos()函数。


<?php
$newstring = ‘abcdef abcdefab’;
$pos = strpos($newstring, ‘a’, 1);
echo $pos; // 显示 7
$pos = strrpos($newstring, ‘ab’, 6);
echo $pos; // 显示 13
?>
count_chars()函数的作用是返回一个字符串里面的字符使用信息。第二个参数五个参数:
0 – 以所有的每个字节值作为键名,出现次数作为值的数组。
1 – 与 0 相同,但只列出出现次数大于零的字节值。
2 – 与 0 相同,但只列出出现次数等于零的字节值。
3 – 返回由所有使用了的字节值组成的字符串。
4 – 返回由所有未使用的字节值组成的字符串。


<?php
$data = “this is a test world”;
print_r(count_chars($data, 1)); // 显示用到字符信息
print_r(count_chars($data, 3)); // 显示 adehilorstw
?>
strspn()函数的作用是匹配并返回第二个参数里面的单字符连续出现长度的值,strspn()函数的第三个参数和第四个参数可选,分别表示开始匹配的位置和返回的最大值。strcspn()函数的使用方法和strspn()函数类似,但功能却相反,返回的是第二个参数中不匹配的字符串长度。


<?php
$var = strspn(“42123 is the answer”, “1234567890″);
echo $var; //显示 5
echo strspn(“faoaaol”, “oa”, 1, 3); // 显示 3
echo strcspn(“csdcsdfaoaaol”, “oa”, 1, 9); // 显示 6
?>
substr()函数可以对字符串进行截取,substr()函数可以有三个参数,第二个参数如果是空,那么默认就为0,如果我负数,就表示从后往前计数,第三个参数如果是正数,表示字符串截取的长度,如果省略,则会一直截取到最后,如果是负数,则表示从后往前截取到的位置。


<?php
echo substr(‘abcdef’,3, 2);  // 显示 de
echo substr(‘abcdef’,”", 2);  // 显示 ab
echo substr(“abcdef”, -2);    // 显示 ef
echo substr(“abcdef”, -3, 1); // 显示 d
echo substr(“abcdef”, -3, -1); // 显示 de
?>
substr_count()函数的作用是计算字符串中某字符段的出现次数,第三个参数表示在字符串中开始比较的位置,省略则默认从头开始,第四个参数表示依次比较的字符数,省略则表示一直比较到末尾。和substr()函数有所不同的是,这两个参数都不支持负数。


<?php
$text = ‘This is a test’;
echo substr_count($text, ‘is’); // 显示 2
echo substr_count($text, ‘is’, 3); // 显示 1
echo substr_count($text, ‘is’, 3, 3); // 显示 0
?>
substr_replace()函数的作用是对字符串中的部分字符进行替换,substr_replace()函数的第三个参数必选,表示需要处理字符的起始位置,负数表示从后往前计数,第四个参数可选,省略表示一直替换到最后,正数表示替换的长度,负数表示从后往前替换到的位置。


<?php
$var = ‘ABCDEFGH:/MNRPQR/’;
echo substr_replace($var, ‘bob’, 0); // 显示 bob
echo substr_replace($var, ‘bob’, 0, 0); // 显示 bobABCDEFGH:/MNRPQR/
echo substr_replace($var, ‘bob’, 10, -1); // 显示 ABCDEFGH:/bob/
echo substr_replace($var, ‘bob’, -7, -1); // 显示 ABCDEFGH:/bob/
echo substr_replace($var, ”, 10, -1); // 显示 ABCDEFGH://
?>
implode()函数的作用是将数组转变为字符串,explode()函数的作用是将一个字符串转变为一数组形式。implode()函数前两个参数的位置是任意的,而explode()函数则不行。explode()函数第三个参数可选,省略则表示全部返回,正数表示返回的数组中单元的个数,最后一个单元包含了未处理完的字符串,负数表示返回值中将除去最后的若干个单元。join()函数的作用和implode()函数相同,是implode()函数的别名。


<?php
$array = array(‘lastname’, ‘email’, ‘phone’);
echo implode($array,”,”); // 显示 lastname,email,phone
$str = ‘one|two|three’;
print_r(explode(‘|’, $str));// 显示 Array ( [0] => one [1] => two [2] => three )
print_r(explode(‘|’, $str, 2));// 显示 Array ( [0] => one [1] => two|three )
print_r(explode(‘|’, $str, -1));// 显示 Array ( [0] => one [1] => two )
?>
strtok()函数的作用是用指定的若干个字符来分割字符串,此函数的功能较强大,但是使用方法比较特殊。在连续使用的时候,第一次需要说明字符串和分割符,但是第二次的时候,只要放入分割符就可以,分割符可以是多个内容,但是不能使用字符串,具体请研究下面的例子:


<?php
$string = “This is\tan example\nstring”;
$tok = strtok($string, ” \n\t”);


while ($tok !== false) {
    echo “$tok<br />”;
    $tok = strtok(” \n\t”);
}
?>
str_split()函数的作用是将一个字符串按照字符间距分割为一个数组,str_split()函数有两个参数,第二个参数可选,默认值为“1”。


<?php
$str1 = “asd”;
$str2 = “Hello Friend”;
print_r(str_split($str1)); // 显示 Array ( [0] => a [1] => s [2] => d )
print_r($arr2 = str_split($str2, 4)); // 显示 Array ( [0] => Hell [1] => o Fr [2] => iend )
?>
chunk_split()函数的作用是按一定的字符长度将字符串分割成小块,第二个参数可选,表示字符间距,默认为76,第三个参数可选,表示用什么字符进行分割,默认为“\r\n”。


<?php
$str = “asdasdasd”;
echo chunk_split($str,3,”,”); // 显示 asd,asd,asd,
?>
wordwrap()函数的作用是按照一定的字符长度分割字符串,第二个参数可选,表示按多少字符进行分割,默认为75,第三个参数可选,表示用哪个字符分割,默认为“\n”,第四个参数可选,true表示强制打破一个单词,false表示不大破单词,默认为false。


<?php
$text = “A very long woooooooooood asdasd”;
echo wordwrap($text, 12, “<br />\n”, true); // woooooooooood被打破
echo wordwrap($text, 12, “<br />\n”, false); // woooooooooood未被打破
?>
strlen()函数的作用是获取一个字符串的编码长度。


<?php
$text1 = “ABC”;
$text2 = “中文”;
echo strlen($text1); // 显示 3
echo strlen($text2); // 显示 6
?>
str_word_count()函数的作用是获取字符串里面的英文单词信息,第二个参数可选,0表示只返回单词的个数,1表示将找到的单词作为一个数组返回,2表示找到的单词和单词所在的字符位置信息作为一个联合数组(associative)返回,省略的默认值是0;第三个参数也是可选的,表示需要忽略的断词符号,默认的断词符号有空格,数字等等,有时候需要忽略一些。


<?php
$str = “Hello fri3nd, you’re
       looking          good today!”;
echo str_word_count($str); // 显示 7
print_r(str_word_count($str, 1));
// 显示 Array ( [0] => Hello [1] => fri [2] => nd [3] => good [4] => today )
print_r(str_word_count($str, 2));
// 显示 Array ( [0] => Hello [6] => fri [10] => nd [14] => good [19] => today )
print_r(str_word_count($str, 1, ‘àá~ac3′));
// 显示 Array ( [0] => Hello [1] => fri3nd [2] => good [3] => today )
?>
nl_langinfo()函数的作用是获取某些字符信息,但是没有在windows平台下实现,所以,我以后在讨论。


localeconv()函数的作用是获取数字相关的格式定义。setlocale()函数可以设置关于数字,日期等等的本地格式,相关内容较复杂,这里省略不谈。这两个函数的作用是为了解决在不同的国家地区之间,对数字,货币,日期等字符形式不同的表现内容而进行简易设置的作用。


strrev()函数的作用是将字符串里面的所有字母反向排列。str_shuffle()函数的作用是对一个字符串里面的字符进行随机排序。


<?php
echo strrev(“ABC”); // 显示 CBA
$str = ‘abcdef’;
echo str_shuffle($str);
?>
str_pad()函数的作用是对字符串进行两侧的补白,第二个参数表示补白以后的长度,第三个参数可选,表示进行补白的字符串,默认为空格,第四个参数可选,表示补白的方式,有三个常量可以选择:STR_PAD_RIGHT,STR_PAD_LEFT和STR_PAD_BOTH,分别表示右补白,左补白和两侧补白,默认值为STR_PAD_RIGHT。


<?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_”
?>
str_repeat()函数的作用是对字符串进行重复组合,第二个参数表示重复的次数,值为0的时候将返回一个空字符串。


<?php
echo str_repeat(“ab”, 3); // 显示 ababab
?>
chr()函数的作用是返回一个字符的ASCII码,ord()函数的作用是将一个ASCII码转换为一个字符。


<?php
$str = “a”;
echo ord($str); // 显示 97
$asc2 = 97;
echo chr($asc2); //显示 a
?>
strcmp()函数的作用是对字符串进行大小比较,第一个参数大于第二个参数时返回一个大于0的数,小于则返回一个小于0的数,等于则返回0,此函数的比较结果返回值是非常令人困惑的,因而此函数的主要用处是比较两个字符串是否相等。strncmp()函数的作用和strcmp()函数类似,区别是strncmp()函数有第三个必选参数,用来限制进行比较的前N个字符。strcasecmp()的作用和strcmp()函数类似,区别是strcasecmp()函数忽略大小写。strncasecmp()函数的作用和strncmp()函数类似,区别是strncasecmp()函数忽略大小写。strnatcmp()函数的作用和strcmp()函数类似,区别是strnatcmp()函数使用自然排序法对字符串之间进行比较。strnatcasecmp()函数的作用和strnatcmp()函数类似,区别是strnatcasecmp()函数比较时不区分大小写。strcoll()函数的作用和strcmp()函数类似,区别是strcoll()函数会根据本地环境的设置而改变比较的方式,而产生不同的结果,这里暂时跳过不讨论。


<?php
echo strcmp(“red”, “red”); // 显示 0
echo strncmp(“red apple”, “red”, 3); // 显示 0
echo strcasecmp(“Red”, “red”); // 显示 0
echo strncasecmp(“Red apple”, “red”, 3); // 显示 0
?>
上面这些函数的另一个作用是被作为回调函数的形式使用(其实也是最主要的用途所在):


<?php
$arr1 = $arr2 = array(“img12.png”, “img10.png”, “img2.png”, “img1.png”);
usort($arr1, “strcmp”);
print_r($arr1); // 显示标准排序以后的结果
usort($arr2, “strnatcmp”);
print_r($arr2); // 显示自然排序以后的结果
?>
substr_compare()函数可以对字符串进行截取后的比较,第三个参数表示比较开始的起始位置,第四个参数可选,表示进行比较的长度,省略则表示一直比较到末尾,第五个参数可选,设置为true可以忽略大小写,false表示不忽略大小写,默认值为false。


<?php
echo substr_compare(“abcde”, “bc”, 1, 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); //显示 报错
?>
similar_text()函数的作用是比较两个字符串,返回系统认为的相似字符个数,第三个参数可选,可以对一个变量附值为相似度百分比。levenshtein()函数的作用是对字符串进行比较,并且返回两个字符串的相似度,有三个可选参数,但是不知道如何使用。


<?
echo similar_text(“abcdas”, “abdcas”, $p); // 显示 5
echo “$p%”; // 显示 83.3333333333%
echo levenshtein(“ab”, “abcd”); // 显示 2
echo levenshtein(“abc”, “abcd”); // 显示 1
echo levenshtein(“abcd”, “abcd”); // 显示 0
?>
soundex()函数的作用是判断一个字符串的发音规则,用4位的字符串表示。metaphone()函数的作用是判断一个字符串的发音规则,和soundex()函数类似,但是显示的是一个不定长的字符串。


<?php
echo soundex(“Ellery”);    // 显示 E460
echo soundex(“Ghosh”);     // 显示 G200
echo soundex(“Heilbronn”); // 显示 H416
echo metaphone(“Ellery”);    // 显示 ELR
echo metaphone(“Ghosh”);     // 显示 FX
echo metaphone(“Heilbronn”); // 显示 HLBRN
?>
addslashes()函数的作用是为字符串里面的部分字符添加反斜线转义字符,addslashes()函数只为4个字符添加转义,单引号“’ ”,双引号“””,反斜线“\”和NULL(“\0”)。addcslashes()函数的作用也是对字符串添加转义,但是转义的字符必须由第二个参数指定,第二个参数的使用方法难度太高,跳过不讲。stripslashes()函数的作用和addslashes()函数正好相反,可以将addslashes()函数转义的那4个字符取消转义。同样,stripcslashes()函数的作用和addcslashes()函数相反。quotemeta()函数的作用是对11个特定字符进行转义,包括:. \ + * ? [ ^ ] ( $ ) 似乎是可以用在正则里面。


<?php
echo addslashes(“‘\”\ “); // 显示 \’\”\\
echo addcslashes(“zoo['.']“, ‘zo’); // 显示 \z\o\o['.']
echo addcslashes(“z\”oo['.']“, ‘\’\”‘); // 显示 z\”oo[\'.\']
echo addcslashes(‘foo[ ]‘, ‘A..z’); // 显示 \f\o\o\[ \]
echo stripslashes(addslashes(“‘\”\ “)); // 显示 ‘”\
echo stripcslashes(addcslashes(“z\”oo['.']“, ‘\’\”‘)); // 显示 z”oo['.']
echo quotemeta(“. \ + * ?”); // 显示 \. \\ \+ \* \?
?>
htmlspecialchars()函数的作用是将字符串中一些字符转换为HTML实体,默认情况下主要包括这4个字符:“<”,“>”,“&”和“””,分别转换为HTML实体:“<”,“>”,“&”呵“””。htmlentities()函数的第二个可选参数可以选择引号的转换模式,可以选择三个常量:ENT_COMPAT表示转换双引号但是保留单引号,ENT_QUOTES表示同时转换双引号和单引号,ENT_NOQUOTES表示两个都不转换,默认值为ENT_COMPAT。第三个可选参数表示所转换字符的编码集。htmlspecialchars_decode()函数的作用和htmlspecialchars()函数刚好相反,但是两个函数的使用方法一样。


<?php
$str = “<a href=’test’>Test</a>”;
echo htmlspecialchars($str); // 显示(源代码里面) <a href=’test’>Test</a>
echo htmlspecialchars($str, ENT_QUOTES); // 显示(源代码里面) <a href=’test’>Test</


PHP中的字符串函数(String Functions)》有 1 条评论

  1. hiroki 说:

    支持支持啊

留下一个回复