主要内容:总结了第四章,主要关于字符串处理。参考书籍《精通php5 应用开发》。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
(1)字符串运算符
其他运算符好多与java类似。不过字符串链接符号就不同:php中用'.'。
(2)字符串分析
在某些语言里字符串是作为字符数组处理的,而php把字符串作为一种基本的数据类型来处理。因此,php使用特定的函数对字符串进行分析。
基本的字符串分析函数:
strlen():计算字符串的长度
substr():取子串
strpos()和strrpos():计算子字符串出现的位置
eg:
$str = "hello php world! ";
echo "<br>";
echo substr($str,10,4);
echo "<br>";
echo substr($str,10);
echo "<br>";
echo strpos($str,"l");
echo "<br>";
echo strrpos($str,'l');
echo "<br>";
strpos方法是取第一个匹配位子,strrpos方法是取最后一个匹配的位子。而这两个方法需要注意一点:当
没有查询到特定字符串出现的位置时,函数将返回FALSE。因此判断一个字符串中是否含有另外一个子串的正确方法是
使用恒等“===”
eg:
if(strpos($str,"w")===false)
{//...}
(3)取字符串偏移(访问字符串中的字符)
如上的方法基本能对字符进行基本操作。
但是下面介绍一些方法来方便的访问字符串的字符
一个非常好用的方法那就是使用{}括号来取偏移字符。
eg:
$str= 'this is a book.';
echo $str{3};//output 's'
利用这个方法反序排列字符串:
$str="this is a book.";
$len = strlen($str);//这里前面一直出错,一个错误是因为 $len 前加了个int
for($i=$len-1;$i>=0;$i--)
{
echo $str{$i};
}
(4)字符串中的分割与连接
分隔字符串,可以使用函数explode(),该函数有三个参数,第一个参数设置一个分割字符(串)。第二个参数指定所要操作的字符串。第三个参数可选,指定最多将字符串分割为多少子串。该函数返回一个由被分割的子串组成的数组。
eg:
<?php
$this_year=2007;
$text=<<<EOT
祝无双,F,1982,广东,普通职员
李大嘴,M,1981,河北,普通职员
佟香玉,F,1980,山西,项目经理
EOT;
$lines=explode("\n",$text);
foreach($linesas$userinfo)
{
$info=explode(",",$userinfo,3);
$name=$info[0];
$sex=($info[1]=="F")?"女":"男";
$age=$this_year-$info[2];
echo"姓名:".$name." ".$sex."年龄:".$age."<br>";
}
?>
关于定界符<<<,字符串必须包含在一组定界符内。细节结束符号必须顶格。
刚开始看书上的EOT ,EOD 以为有什么区别,结果我试了下,随便写。前后对应,符合标识符的命名规则就行。
【php中explode对应JAVA、javascript里的split方法。】
连接字符串 implode() 函数,它的别名叫join
eg:
<?php
$fruits=array('apple','banana','pear');
$tem=join(",",$fruits);
echo$tem;
?>
javascript里面有join方法,也能很方便将数组组合为字符串。
(5)字符串的整理
删除字符串的空白,trim().
<?php
$str=" sdf";
echostrlen($str);
echo"<br>";
echostrlen(trim($str));
?>
trim 删除的是前后空格。
ltrim 、rtrim两个函数也是删除空格,一个删除左边空格,一个删除右边空格。
而且删除的是单字节空格,当这些空格是全角空格这些函数是没有作用的。
【?但双字节空格在程序里怎么分的?】
(6)字符串的填补
str_pad 函数用于进行字符串的填补工作,
第一个参数是处理的字符串对象,第二参数是总长度,第三个参数是指长度不够总长以什么符号来填补,第四个参数为填补左边还是右边(默认不写为填补右边)。
eg:
<?php
$prices=array(
"人员工资"=>42840,"房租"=>4000,"维修费"=>925,);
$sum=0;
foreach($pricesas$title=>$pay)
{
$sum+=$pay;
echostr_pad($title,15,"=");
echostr_pad($pay,15,"=",STR_PAD_LEFT);
echo"¥<br>";
}
echostr_repeat("-",30),"<br>";
echostr_pad("总支出",15,"=");
echostr_pad($sum,15,"=",STR_PAD_LEFT);
echo"¥<br>";
?>
(7)字符串的反转
前面曾经讲过字符串反转的例子,实际上php已经内置了这个函数。strrev()函数可以对字符串中的字符反序排列,这种反序是按照字节进行的。
<?php
echo strrev("hello world !");
?>
(8)字符串大小写转换
关于字符串大小写的转换函数,主要有以下四个。
strtoupper():将给定的字符串全部转换为大些字母
strtolower():将给定的字符串全部转换为小写字母
ucfirst():将给定的字符串的首字母转换为大些,其余不变。
ucwords():将给定的字符串中全部单词的首字母转换为大写。字符串中的单词均以空白分隔。
<?php
$str = "Tom Is A PHP Programer.";
//全部转换为小写
$lower = strtolower($str);
echo $lower;
//全部转换为大写
$upper = strtoupper($str);
echo $upper;
//将整句首字母大写
$string = 'hello php world!';
echo ucfirst($string);
?>
(9)字符串的比较
除了运算符:< > ===等,还可以有以下三种方法。
按字节比较: strcmp()、strcasecmp()
放入strcmp的两个字符串将按照字节的ascii码值进行比较。从$str1 和 $str2 各自的首字节开始。如果前者小于后者返回负数,反之正数,相等为零。
【书上这里是错的,他写的是前者大于后者返回负数】
<?php
$test=strcmp("Thomas","Tom");
echo$test;
if(strcmp("大连","大庆")>0)
{
<span |