5.13 将字符串分析到变量
这小节所说的分析字符串,是指分析URL中的查询字符串。例如一个URL是:http://www.somesite.com/index.php?i=000&key=1a2b3c&cnt=10,那么该URL的查询字符串就是i=000&key=1a2b3c&cnt=10。PHP提供函数parse_str()可以分析类似的字符,并将分析结果赋值给变量。函数parse_str()的语法如下所示。 void parse_str(string $str [, array $arr])
本函数可将URL的查询字符串参数$str解析,返回的变量名及值就和查询字符串中的名称及值相对应。该函数第2个参数一个指定的数组,是可选的。如果指定这个数组参数,那么函数parse_str()将分析字符串得到变量作为数组索引、值作为数组元素存入该数组。
$arr = array();
parse_str(\echo $arr['id'].\echo $arr['name']; ?>
效果如下:
$str = \echo '原字符串:'; echo '
'; echo $str;
parse_str($str); echo '
'; echo '
';
echo '分析结果:'; echo '
';
echo 'first = '.$first; echo '
';
echo 'second[0] = '.$second[0]; echo '
';
echo 'second[1] = '.$second[1];
parse_str($str,$input); echo '
'; echo '
';
echo '指定输出数组参数的结果:'; echo '
';
echo \echo '
';
echo \echo '
';
echo \echo '
'; ?>
效果如下:
5.14 转换字符串到数组
PHP提供的函数str_split(),可将字符串转换成一个数组,即将数组分割成几个部分,每个部分的值作为数组的元素。该函数的语法如下所示。 array str_split(string $str [, int $split_length])
该函数将字符串$str做分割,将分割后的字符串各部分存入数组,并将数组返回。可选参数$split_length用来指定分割字符串长度。如果没有指定该参数,函数将把字符串$str按一个字符的长度分割。
$str = 'How are you?'; echo '原字符串:'; echo '
';
echo $str; echo '
'; echo '
';
$arr1 = str_split($str); $arr2 = str_split($str, 3);
echo '
'; print_r($arr1); print_r($arr2); echo ''; ?>
效果如下:
5.15 计算字符串的Hash(哈希)
所谓的哈希(Hash)也叫散列,它就是指把任意长度的输入(又叫做预映射),通过散列算法,变换成固定长度的输出,该输出就是散列值。
Hash主要用于信息安全领域的加密算法,它把一些不同长度的信息转化成杂乱的128位的编码,这个编码,叫做Hash值。也可以说,Hash就是找到一种数据内容和数据存放地址之间的映射关系。常见的Hash算法有MD5,SHA1等。
PHP中提供了对应的函数,完成对字符串做MD5哈希计算的函数,也提供函数完成SHA1哈希计算的函数,这两个函数分别是md5()和sha1(),下面分别加以简要说明。函数md5()的语法如下所示。
string md5(string $str )
该函数用来计算参数字符串$str的MD5哈希,另外一个计算哈希的函数sha1()的语法如下所示。 string sha1(string $str )
$str1 = 'This is a secret'; $str2 = 'root';
echo '原字符串:'; echo '
';
echo 'str1='.$str1; echo '
';
echo 'str2='.$str2; echo '
'; echo '
';
echo '使用md5加密:'; echo '
';
echo \echo '
';
echo \
echo '
'; echo '
';
echo '使用sha1加密:'; echo '
';
echo \echo '
';
echo \?>
效果如下:
5.16 小结
本章通过介绍一些主要的字符串处理函数,来学习在PHP程序中如何完成对字符串的操作。这些函数都是比较基本的,读者务必掌握。本章讲到的函数包括:将字符串分割后存入数组的函数explode()。将数组中的元素合并成字符串的函数implode()。比较两个字符串大小的函数strcmp()。字符串替换函数str_replace()。输出字符串的语言结构echo和print。字符串格式化函数sprintf()。 截取字符串的函数substr()。删除字符串开头和末尾空白字符的函数ltrim()、rtrim()、trim()。获取字符串长度的函数strlen()。对字符串做大小写转换的函数strtolower()和strtoupper()。处理含有HTML标记的函数htmlentities()、htmlspecialchars()和html_entity_decode()。重复生成字符串的函数str_repeat()。分析字符串到变量的函数parse_str()。转换字符串到数组的函数str_split()。计算字符串Hash的函数md5()。和sha1()。
30.格式化字符串
Printf()函数和sprintf()函数实现的功能与echo相同,但是有返回值(成功返回true,失败返回false). 不过printf()函数和sprintf()函数还可以实现一些更复杂的格式输出,这两个函数功能基本相同,pringf()函数是将一个格式化的字符串输出到浏览器,而sprintf()函数式返回一个格式化了的字符串。 Void printf(string format[,mixed args””]) String sprint(string formate[,mexed args””]) Printf是和c语言中一样的。
$total = 2.5;
echo \$total.\.\; printf(\,$total); ?>
效果如下:
31.改变字符串中字母的大小写 Strtoupper():将字符串转换为大小 Strtolower():将字符串转换为小写
Uefirst():如果字符串的第一个字符是字母,就转换为大写
Ucwords():将字符串中的每一个单词的第一个字母转换为大写。
32.获取和转换ASCII
String chr(int ascii):把ASCII编码转换为字符串 Int ord(charchar):把字符转换为ASCII编码 32.PHP中存在的系统变量有很多,比如:
echo \. PHP_OS; echo \;
echo \. PHP_VERSION . \; ?> 效果:
33.文件包含: 33.1使用include
Include(string filename)
Include 进来的文件里面的变量和包含它的文件使用的是同一个变量
echo \ $a \\n\; include ('index.php'); echo \ $a \\n\; echo \ $b \\n\ ; ?>
Index.php:
效果如下:
对于被包含的文件(如index.php),我们可以使用return 语句来终止它的执行,也可以使用return语句来返回一个值.
echo include 'index.php'; ?>
Index.php:
return $a/2; ?>
效果如下:
Include_once语句和include的区别在于:如果该文件中的代码已经被包含了,则不会再次被包含,