字符串的显示可以使用echo()函数和print()函数,print()函数具有返回值,返回1;而echo()函数则没有,所以echo()函数比print()函数要快一些,也正是因为这个原因,print()函数能应用于复合语句中,而echo()函数则不能。
$return=print "test"; // 输出"test"
echo $return; // 输出1
// echo()函数可以一次输出多个字符串,而print()函数则不可以
echo "I", "love", "PHP"; //输出"IlovePHP"
print "I", "love", "PHP"; //将提示错误
?>
printf()函数将一个通过替换值建立的字符串输出到格式字符串中,这个命令和C语言中的printf()函数结构和功能一致。语法格式如下:
int printf(string $format [ , mixed $args])
第一个参数 f o r m a t 是 格 式 字 符 串 , format是格式字符串, format是格式字符串,args是要替换的值,格式字符串里的字符“%”指出了一个替换标记。
格式字符串中的每一个替换标记都由一个百分号组成,后面可能跟有一个填充字符、一个对齐方式字符、字段宽度和一个类型说明符。字符串的类型说明符为“s”。例如:
//显示字符串
$str="hello";
printf("%s\n",$str); //输出"hello"并回车
printf("%010s\n",$str); //在字符串前补0,将字符串补成10位
//显示数字
$num=10;
printf("%d",$num); //输出10
?>
在操作字符串时经常需要计算字符串的长度,这时可以使用strlen()函数,语法格式:
int strlen(string $string)
该函数返回字符串的长度,1个英文字母长度为1个字符,1个汉字长度为3个字符,字符串中的空格也算一个字符。例如:
$str1="hello ";
echo strlen($str1); //输出6
$str2="中国";
echo strlen($str2); //输出6
?>
使用strtolower()函数可以将字符串全部转化为小写,使用strtoupper()函数将字符串全部转化为大写。例如:
echo strtolower("HelLO,WoRlD"); //输出"hello,world"
echo strtoupper("hEllo,wOrLd"); //输出"HELLO,WORLD"
?>
使用ucfirst()函数可以将字符串的第一个字符改成大写,使用lcfirst()函数可以将字符串的第一个字符改成小写,使用ucwords()函数可以将字符串中每个单词的第一个字母改成大写。例如:
echo ucfirst("hello world"); //输出"Hello world"
echo lcfirst("HelloWorld"); //输出"helloWorld"
echo ucwords("how are you"); //输出"How Are You"
?>
实际应用中,字符串经常被读取,以及用于其他函数的操作。当一个字符串的首和尾有多余的空白字符,如空格、制表符等,参与运算时就可能产生错误的结果,这时可以使用trim、rtrim、ltrim()函数来解决。它们的语法格式如下:
string trim(string $str [, string $charlist ])
string rtrim(string $str [, string $charlist ])
string ltrim(string $str [, string $charlist ])
ltrim()、rtrim()、trim()函数分别用于删除字符串 s t r 中 最 左 边 、 最 右 边 和 两 边 的 与 str中最左边、最右边和两边的与 str中最左边、最右边和两边的与charlist相同的字符,并返回剩余的字符串。例如:
$str1=" hello ";
echo trim($str1); //输出"hello"
$str2="aaahelloa";
echo ltrim($str2, "a"); //输出"helloa"
?>
strstr()函数的语法格式如下:
string strstr ( string $haystack, mixed $needle [, bool $before_needle = false ] )
说明:strstr()函数用于查找字符串指针 n e e d l e 在 字 符 串 needle在字符串 needle在字符串haystack中出现的位置,并返回 h a y s t a c k 字 符 串 中 从 haystack字符串中从 haystack字符串中从needle第一次出现的位置开始到$haystack结尾的字符串。
如果没有返回值,即没有发现 n e e d l e , 则 返 回 F A L S E 。 如 果 needle,则返回FALSE。如果 needle,则返回FALSE。如果needle不是一个字符串,那么它将被转化为整型并且作为字符的序号来使用。
可选的before_needle参数若为TRUE,strstr()函数则返回 n e e d l e 在 needle在 needle在haystack中的位置之前的部分。strstr()函数还有一个同名函数strchr()。例如:
echo strstr("hello world","llo"); //输出"llo world"
echo strstr("hello world","llo",true); //输出"he"
$str="I love PHP";
$needle="PHP";
if(strstr($str,$needle))
echo "有PHP"; //输出"有PHP"
else
echo "没有PHP"; //不输出
?>
在字符串处理中,使用ord()函数可以返回字符的ASCII码,也可以使用chr()函数返回ASCII码对应的字符,例如:
echo ord("a"); //输出97
echo chr(98); //输出"b"
?>
使用“!=”和“”比较的两个对象不一定要类型相等,整型也可以和字符串比较,如 123"123" 返回TRUE。而“!”和“=”比较的对象类型要严格相同才可能返回TRUE,如 123===“123” 返回FALSE。
经常使用的字符串比较函数有:strcmp()、strcasecmp()、strncmp()和strncasecmp()。语法格式如下:
int strcmp(string $str1, string $str2)
int strcasecmp(string $str1, string $str2)
int strncmp(string $str1, string $str2, int $len)
int strncasecmp(string $str1, string $str2, int $len)
echo strcmp("aBcd","abde"); // 输出-1,比较了"B"和"b","B"<"b"
echo strcasecmp("abcd","aBde"); // 输出-1,比较了"c"和"d","c"<"d"
echo strncmp("abcd","aBcd",3); // 输出1,比较了"abc"和"aBc"
echo strncasecmp("abcdd","aBcde",3); // 输出0,比较了"abc"和"aBc"
?>
5.1 字符串的替换操作中最常用的就是str_replace()函数,其语法格式如下:
mixed str_replace ( mixed $search, mixed $replace, mixed $subject [, int &$count ] )
说明:str_replace()函数使用新字符串 r e p l a c e 替 换 字 符 串 replace替换字符串 replace替换字符串subject中的 s e a r c h 字 符 串 。 search字符串。 search字符串。count是可选参数,表示要执行的替换操作的次数。例如:
$str="I love you";
$replace="lucy";
$end=str_replace("you",$replace,$str);
echo $end; //输出"I love lucy"
?>
str_replace()函数对大小写敏感,还可以实现多对一、多对多的替换,但无法实现一对多的替换,例如:
$str="What Is Your Name";
$array=array("a","o","A","O","e");
echo str_replace($array, "",$str); //多对一的替换,输出"Wht Is Yur Nm"
$array1=array("a","b","c");
$array2=array("d","e","f");
echo str_replace($array1,$array2, "abcdef"); //多对多的替换,输出"defdef"
?>
说明:使用多对多替换时,第二个数组中对应的元素会替换掉第一个数组中的元素,如果有一个数组比另一个数组元素数少,则不足的部分会作为空值来处理。
5.2 PHP另外还有一个substr_replace()函数实现替换字符串的一部分,语法格式如下:
mixed substr_replace(mixed $string, string $replacement, int $start [, int $length ])
l e n g t h 是 可 选 参 数 , 表 示 要 替 换 的 长 度 , 如 果 不 给 定 , 则 从 length是可选参数,表示要替换的长度,如果不给定,则从 length是可选参数,表示要替换的长度,如果不给定,则从start位置开始一直到字符串结束;
echo substr_replace("abcdefg","OK",3); //输出"abcOK"
echo substr_replace("abcdefg","OK",3,3); //输出"abcOKg"
echo substr_replace("abcdefg","OK",-2,2); //输出"abcdeOK"
echo substr_replace("abcdefg","OK",3,-2); //输出"abcOKfg"
echo substr_replace("abcdefg","OK",2,0); //输出"abOKcdefg"
?>
**htmlspecialchars()函数:**将字符转化为HTML实体形式
语法格式如下:
string htmlspecialchars(string $string [, int $quote_style [, string $charset [, bool $double_encode ]]])
参数 s t r i n g 是 要 转 换 的 字 符 串 , string是要转换的字符串, string是要转换的字符串,quote_style、 c h a r s e t 和 charset和 charset和double_encode都是可选参数。
$quote_style指定如何转换单引号和双引号字符,取值可以是:
$charset是字符集,默认为UTF-8。
$double_encode如果为FALSE则不转换成HTML实体,默认为TRUE。例如:
$new="test";
echo htmlspecialchars($new); //页面中输出"test"
echo htmlspecialchars($new, ENT_NOQUOTES); //页面中输出"test"
?>
htmlspecialchars_decode()函数:可以将HTML实体形式转换为HTML格式
$html=htmlspecialchars_decode("<a href='test'>test</a>");
echo $html;
?>
在HTML文件中使用“\n”,显示HTML代码时不能显示换行的效果,这时可以使用nl2br()函数,这个函数可以用HTML中的“
”标记代替字符串中的换行符“\n”。例如:
$str="hello\nworld";
echo $str; // 直接输出不会有换行符
echo nl2br($str); // "hello"后面换行
?>
使用explode()函数可以用指定的字符串分割另一个字符串,并返回一个数组。
语法格式如下
array explode(string $separator, string $string [, int $limit ])
说明:此函数返回由字符串组成的数组,每个元素都是 s t r i n g 的 一 个 子 串 , 它 们 被 字 符 串 string的一个子串,它们被字符串 string的一个子串,它们被字符串separator作为边界点分割出来。例如:
$str="使用 空格 分割 字符串";
$array=explode(" ", $str);
print_r($array);
//输出Array ( [0] => 使用 [1] => 空格 [2] => 分割 [3] => 字符串 )
?>
使用implode()函数可以将数组中的字符串连接成一个字符串,语法格式如下:
string implode(string $glue, array $pieces)
g l u e 是 用 于 连 接 字 符 串 的 连 接 符 , glue是用于连接字符串的连接符, glue是用于连接字符串的连接符,pieces是保存要连接的字符串的数组。例如:
$array=array("hello","how","are","you");
$str=implode(",",$array); // 使用逗号作为连接符
echo $str; // 输出"hello,how,are,you"
?>
PHP提供crypt()函数完成加密功能,语法格式如下:
string crypt(string $str [, string $salt ])
这个函数完成的是单向加密的功能,即字符串一旦被加密就无法转化为原来的形式。
PHP包含了它自己的MD5 Crypt实现,包括标准DES算法、扩展的DES算法及Blowfish算法。如果系统缺乏相应的实现,那么PHP将使用它自己的实现,以便在默认状态下获得更高的安全性。例如:
$str="字符串";
$password=crypt($str);
echo $password; // 输出单向加密后的字符串
if(crypt("字符串",$password)==$password){
echo "验证成功!";
}
?>
字符串转换函数hex2bin()函数的功能是将十六进制字符串转换为二进制字符串,语法格式如下:
string hex2bin ( string $data )
其中,参数$data是十六进制表示的数据,此函数返回给定数据的二进制表示或者在失败时返回FALSE。例如:
$hex=hex2bin("6578616d706c65206865782064617461");
var_dump($hex); // 打印 string 'example hex data' (length=16)
?>