4.1 案例介绍
处理项目中的各种字符串
4.2 分析案例
用字符串函数根据需求处理字符串。
4.3 核心知识
字符串的定义
---单引号定义(转义\'和\\)
---双引号定义(转义\n \r \t \$ \\ \")
---定界符方法<< 字符串函数 4.4 知识讲解 4.4.1字符串的定义 string是一系列字符。在 PHP 中,字符和字节一样,也就是说,一共有 256 种不同字符的可能性。这也暗示 PHP 对 Unicode 没有本地支持。 注: 一个字符串变得非常巨大也没有问题,PHP 没有给字符串的大小强加实现范围,所以完全没有理由担心长字符串。 语法: 字符串可以用三种字面上的方法定义: —— 单引号 ‘‘和`` —— 双引号 ““ —— 定界符<<< 单引号 指定一个简单字符串的最简单的方法是用单引号(’)括起来。 例如: $str1=‘phpchina’; //字符串str1赋值 用于单引号字符串的转义序列\’解释为一个单引号,\\解释为一个反斜杠(\)。任何其他反斜线的出现仅仅被解释为一个反斜杠。 注: 和其他两种语法不同,单引号字符串中出现的变量和转义序列不会被变量的值替代。 双引号 如果用双引号(“)括起字符串,PHP 懂得更多特殊字符的转义序列: 转义字符: \” 双引号 \n 换行 \r 回车 \t 制表符 \\ 反斜杠 \$ 美元符 \{ 左大括号 \} 右大括号 \[ 左中括号 \] 右中括号 此外,如果试图转义任何其它字符,反斜线本身也会被显示出来! 双引号字符串最重要的一点是其中的变量名会被变量值替代。
$aa=‘aa’; print(‘aa is \’aa\’’." print("aa is \"aa\""." print("aa is ‘aa’"." print(‘aa is "aa"‘." print(“aa is $aa”.“ print(“aa is {$aa}”.“ print(‘aa is $aa’." print(‘aa is ‘.$aa); ?> 定界符 另一种给字符串定界的方法使用定界符语法:(“<<<“)。应该在<<<之后提供一个标识符,然后是字符串,然后是同样的标识符结束字符串。结束标识符必须从行的第一列开始。定界符文本表现的就和双引号字符串一样,在定界符文本中不需要转义引号。
$my_quote=<< "Put your hand on a hot stove for a minute, and it seems like an hour. Sit with a pretty girl for an hour, and it seems like a minute.here; echo $my_quote; ?> 4.4.2打印字符串(字符串的输出)函数 echo( ) 语法: echo "string arg1, string [argn]..."; 它是语言结构,不是真正的函数。它和print的区别在于,可以接受多个参数。 例如: echo“first”,”second”,”third”;//合法 echo (“hello”,”world!”); //解析错误 print( ) 语法: int print(string arg); 本函数输出字符串。若成功则返回1,失败则返回 0。例如传输中途客户的浏览器突然挂了,则会造成输出失败的情形。 例如:if(!print(“Hello,world”)) { die(“you’re not listening to me!”); } 4.4.3 ucfirst( ) ucfirst()将字符串第一个字符改大写。 语法: string ucfirst(string str); 返回值: 字符串 本函数返回字符串 str 第一个字的字首字母改成大写。
?> 4.4.4 ucwords( ) ucwords()将字符串每个字第一个字母改大写。 语法: string ucwords(string str); 返回值: 字符串 本函数返回字符串 str 每个字的字首字母全都改成大写。
?> 4.4.5格式化字符串以便显示 函数:sprintf() --将字符串格式化。 语法: string sprintf(string format, mixed [args]...); 返回值: 字符串 本函数用来将字符串格式化。参数 format 是转换的格式,以百分比符号 % 开始到转换字符为止。 转换说明的类型码如下: b 整数转成二进位。 c 整数转成对应的 ASCII 字符。 d 整数转成十进位。 f 单倍精确度数字转成浮点数。 o 整数转成八进位。 s 转成字符串。 x 整数转成小写十六进位。 X 整数转成大写十六进位。 printf( ) 输出格式化字符串。 语法: int printf(string format, mixed [args]...); 返回值: 整数 本函数依参数 format 指定的内容格式将字符串格式化,同sprintf()。
printf("1...the character value of %d is %c",72,72) printf("2...control the number of decimal in %f with %.2f",5.1234,5.1234); printf("3...we can also left-pad number with zeros: %05f",33.22); printf("4...or we can left-pad number and special precision : %5.2f",33.22); printf("5...the hexadecimal representation of %d is %x",92,92); printf("6...but you can also write it as %X",92); printf("7...and if you were wondering, its octal representation is %o",92); printf("8...left-pad the string %s with dashes, like so: %’*6s",’foo’,’bar’); printf("9...and now let’s right-pad it with dashes: %’*-6s",’foo’,’bar’); ?> 4.4.6 explode() 使用一个字符串分割另一个字符串 语法:array explode ( string separator, string string [, int limit] ) 此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。如果设置了 limit 参数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。 例如: $pizza = "piece1 piece2 piece3"; $pieces = explode(“ ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2 4.4.7 implode() 用一组较小的字符串创建一个大字符串。 格式:string implode ( string glue, array pieces ) 第一个参数glue是放在第二个参数pieces的元素之间的字符串。可以像下面这样重建简单的逗号分隔的字符串。 例如: $array = array(‘lastname’, ‘email’, ‘phone’);$comma_separated = implode(“,”, $array);echo $comma_separated; //显示lastname,email,phone 4.4.8 str_split( ) 将字符串转为数组。 语法: array str_split ( string $string [, int $split_length = 1 ] ); 返回值: 数组 本函数用来将一个字符串按规定个数划分为数组。第二个参数作为可选参数规定每几个字符进行一次划分。
print_r( str_split($str,2)); // array(‘ab’,’cd’,’ef’); ?> 4.4.9 strlen( ) 取得字符串长度。 语法: int strlen(string str); 返回值: 整数 本函数返回指定的字符串长度。
?> 4.4.10 substr( ) 取部份字符串。 语法: string substr(string string, int start, int [length]); 返回值: 字符串 本函数将字符串 string 的第 start 位起的字符串取出 length 个字符,若省略参数 length,则取到字符串末尾 。若 start 为负数,则从字符串尾端往前开始提取。如果length为整数,表示返回length个字符,若为负数,则表示取到倒数第 length 个字符。
?> 4.4.11 strstr( ) 别名:strchr( ) 返回字符串中某字符串开始处至结束的字符串。 语法: string strstr(string haystack, string needle); 返回值: 字符串 本函数将 needle 最先出现在 haystack 处起至 haystack 结束的字符串返回。若找不到 needle 则返回 false。 4.4.12 strrchr() 取得某字符最后出现的位置字符串。 语法: string strrchr(string haystack, string needle); 本函数用来寻找字符串 haystack 中的字符 needle 最后出现位置,并将此位置起至字符串 haystack 结束之间的字符串返回。若没有找到 needle 则返回 false。
?> 4.4.13 strpos() 寻找字符串中某字符最先出现的位置。默认从 0 开始。 语法: int strpos(string haystack, string needle, int [offset]); 本函数用来寻找字符串 haystack 中的字符 needle 最先出现的位置。若找不到指定的字符,则返回 false 值。参数 offset 可省略,用来表示从 offset 开始找。
?> 4.4.14 strrpos( ) 寻找字符串中某字符最后出现的位置。 语法: int strrpos(string haystack, char needle); 返回值: 整数 本函数用来寻找字符串 haystack 中的字符 needle 最后出现的位置。若找不到指定的字符,则返回 false 值。
?> 4.4.15 str_pad() str_pad()可以用于一些敏感信息的保护,如金额的打印。 有4个参数。第一个参数指明要处理的字符串,第二个参数给定处理后字符串的长度。第三个字符串给出填补所用的字符串,默认使用空格进行填补。最后一个参数指定填补的方向,它有3个可选值: STR_PAD_LEFT 字符串左添补 STR_PAD_RIGHT 字符串右添补 STR_PAD_BOTH 字符串两端添补
?> 4.4.16字符串的替换 str_replace() 字符串替换,三种替换方式 str_replace(string $search, string $replace, string $str); str_replace(array $search, string $replace, string $str); str_replace(array $search, array $replace, string $str); ‘;// Processes \r\n’s first so they aren’t converted twice. $newstr = str_replace($order, $replace, $str);// Outputs: apearpearle pear$letters = array(‘a’, ’p’);$fruit = array(‘apple’, ’pear’);$text = ’a p’;$output = str_replace($letters, $fruit, $text);echo $output; ?> 4.4.17处理URL 除了对HTML文字的处理, 在WEB开发时还要对URL地址进行处理。处理URL主要包括: 对URL字符串的解析 parse_url();(解析完整的URL转变成数组) parse_str();(解析请求字符串转变成数组) URL编码处理 urlencode(); (替换所有非字母数字的字符,变为%后面跟两位16进制,空格变为+号) urldecode(); (对已%##编码的URL进行解析还原) rawurlencode(); (替换所有非字母数字的字符,变为%后面跟两位16进制) rawurldecode(); (对已%编码的URL进行解析还原) 构造查询字符串等。 http_build_query();(生成 url-encoded 之后的请求字符串 ) ‘; ?> 4.5 知识运用 在Web应用中,很多情况下需要对字符串进行处理和分析,通常涉及字符串的格式化、连接与分割、比较、查找等一系列操作。用户和系统的交互也基本上是通过文字来进行的,因此系统对文本信息,即字符串的处理非常重视。
");
");
");
");
“);//变量被值替换
“);//大括号分离变量
");