一.字符串函数库
1.安装
2.
(1)strlen:获得字符串的字符长度
(2)substr:字符串截取
格式: string substr(string $var,
int $start[,int $length]);
说明:
(a)$start:开始编号位置,编号从0开始
(b)$length:字符串的截取长度如果$length省略,截取从字符开始到字符串结束
(c)如果$start 开始编号大于字符串的总长度,返回false
(d)$start,$length如果是负值,位置 倒数
(3)
strtoupper:将字符串转为大写
strtolower:将字符串转为小写
ucfirst:字符串的首字母大写
ucwords:每个单词的首字母大写
(4)
trim:清除字符串两边的空格,也可以清除指定字符
ltrim:清除字符串左边的空格,也可以清除指定字符
rtrim: 清除字符串右边的空格,也可以清除指定字符
(5)
strpos:返回子字符串在字符串中首次出现的编号位置,编号从0开始,区分大小写
格式:
mixed strpos(string $haystack,mixed $needle[,int $flag=0]);成功返回编号位置,失败返回false
stripos:不区分大小写
strrpos:返回子字符串在字符串中最后出现的编号位置,编号从0开始,区分大小写
strripos:最后出现的编号位置,不区分大小写
(6)
strstr:查找字符串的首次出现位置,区别大小写
格式:string strstr ( string $haystack ,
mixed $needle [, bool $before_needle = false ] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。如果 $before_needle为true 返回 needle在 haystack 中的位置之前的部分
stristr:不区分大小写
strchr:别名 strstr()
strrchr:查找指定字符在字符串中的最后一次出现位置区别大小写
string strrchr ( string $haystack , mixed $needle )
(7)
strrev :反转字符串
(8)
str_replace:字符串的替换
mixed str_replace ( mixed $search ,mixed $replace , mixed $subject [, int &$count ] )
(9)
htmlspecialchars:转换为html实体
格式:string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT])
说明:
(1) htmlspecialchars只能转换 < > '
" &的特殊符号为HTML实体
(2)$flags默认值:ENT_COMPAT 不处理单引号
$flags:
ENT_COMPAT 不处理单引号
ENT_QUOTES 处理单引号和双引号
ENT_NOQUOTES 不处理单引号和双引号
(10)
MD5:计算字符串的 MD5 散列值,返回32位
sha1:计算字符串的 sha1 散列值,返回40位
(11)strip_tags:从字符串中去除 HTML 和 PHP 标记
string strip_tags ( string $str
[, string $allowable_tags ] )
说明:
a.使用可选的第二个参数指定不被去除的字符列表
二、嵌套循环
嵌套循环:外循环执行一次,内循环完成所有的循环逻辑
1. 行列图形分析
for($i=1;$i<=5;$i++){ //行 //echo '外循环-'.$i.'<br/>'; for($j=1;$j<=3;$j++){//列 echo '内循环----'.$j; } echo '<br/>';
4行3列的表信息
$var ='xxx'; $link=''; $link.='<table border="1" align="center">'; for($i=1;$i<=4;$i++){//行 $link.='<tr>'; for($j=1;$j<=3;$j++){//列 $link.='<td>'.$var.'</td>'; } $link.='</tr>'; } $link.='</table>'; echo $link;
常用 一层循环
$var ='xxx'; $link=''; $link.='<table border="1" align="center">'; for($i=1;$i<=4;$i++){//行 $link.='<tr>'; $link.='<td>'.$var.'</td>'; $link.='<td>'.$var.'</td>'; $link.='<td>'.$var.'</td>'; $link.='</tr>'; } $link.='</table>'; echo $link;
5行5列正方形 *
for($i=1;$i<=5;$i++){//行 for($j=1;$j<=5;$j++){//列 echo '* '; } echo '<br/>';
5行5列三角形 *
for($i=1;$i<=5;$i++){//行 for($j=1;$j<=$i;$j++){//列 echo '* '; } echo '<br/>';
九九乘法口诀表
for($i=1;$i<=9;$i++){ for($j=1;$j<=$i;$j++){ echo $j.'*'.$i.'='.$i*$j.' '; } echo '<br/>';
N图形 带条件的输出
$n=8; for($i=1;$i<=$n;$i++){ for($j=1;$j<=$n;$j++){ if($j==1 || $j==$n ||$j==$i){ echo '* '; }else{ echo ' '; } } echo '<br/>'; }
2. 外循环轮次,内循环带循环的小算法
求具体5!=1*2*3*4*5(累乘算法)
$sum =1; for($i=1;$i<=5;$i++){ $sum *= $i; } echo $sum; echo '<br/>'; // 求 范围 1! --10! for($k=1;$k<=10;$k++){ $sum =1; for($i=1;$i<=$k;$i++){ $sum *= $i; } echo $k.'!='.$sum.'<br/>'; }
判断一个具体变量 是否是回文(对称)算法
$var=123494321; $half = floor(strlen($var)/2); $flag = true; for($i=0;$i<$half;$i++){ $x =substr($var,$i,1);//循环截取前一半的每一位 $y =substr($var,-$i-1,1);//截取后一半对应的每一位 /* $x = 0 1 2 3 $i $y = -1 -2 -3 -4 -$i-1 */ if($x!=$y){ $flag =false; break; } } if($flag){ echo $var.'是回文的'; }else{ echo $var.'不是回文'; }
判断一个范围10-9999中的是回文(对称)算法
for($var=10;$var<=9999;$var++){ $half = floor(strlen($var)/2); $flag = true; for($i=0;$i<$half;$i++){ $x =substr($var,$i,1);//循环截取前一半的每一位 $y =substr($var,-$i-1,1);//截取后一半对应的每一位 /*$x = 0 1 2 3 $i $y = -1 -2 -3 -4 -$i-1*/ if($x!=$y){ $flag =false; break; } } if($flag){ echo $var.'是回文的<br/>'; } }