主要内容:总结了第四章,主要关于字符串处理。参考书籍《精通
php5
应用开发》。
(
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
(
$lines
as
$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"
;
echo
strlen
(
$str
);
echo
"<br>"
;
echo
strlen
(
trim
(
$str
));
?>
trim
删除的是前后空格。
ltrim
、
rtrim
两个函数也是删除空格,一个删除左边空格,一个删除右边空格。
而且删除的是单字节空格,当这些空格是全角空格这些函数是没有作用的。
【?但双字节空格在程序里怎么分的?】
(
6
)字符串的填补
str_pad
函数用于进行字符串的填补工作,
第一个参数是处理的字符串对象,第二参数是总长度,第三个参数是指长度不够总长以什么符号来填补,第四个参数为填补左边还是右边(默认不写为填补右边)。
eg
:
<?
php
$prices
=
array
(
"
人员工资
"
=>
42840
,
"
房租
"
=>
4000
,
"
维修费
"
=>
925
,);
$sum
=
0
;
foreach
(
$prices
as
$title
=>
$pay
)
{
$sum
+=
$pay
;
echo
str_pad
(
$title
,
15
,
"="
);
echo
str_pad
(
$pay
,
15
,
"="
,
STR_PAD_LEFT
);
echo
"
¥
<br>"
;
}
echo
str_repeat
(
"-"
,
30
),
"<br>"
;
echo
str_pad
(
"
总支出
"
,
15
,
"="
);
echo
str_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
)
{
echo
"
大连
"
;
}
else
{
echo
"
大庆
"
;
}
?>
php
中也可以进行忽略大小写比较,使用函数
strcasecmp
().
这就是说,同一个字符的大小写形式认为是相等的。
按自然排序法比较
strnatcmp()
、
strnatcasecmp()
模拟了人类的思维习惯。
<?
php
$arr
=
array
(
"photo1.jpg"
,
"photo2.jpg"
,
"photo10.jpg"
,
"photo12.jpg"
,);
$max_str
=
$arr
[
0
];
for
(
$i
=
1
;
$i
<
count
(
$arr
);
$i
++)
{
if
(
strnatcmp
(
$arr
[
$i
],
$max_str
)>
0
)
{
$max_str
=
$arr
[
$i
];
}
}
echo
$max_str
;
?>
本来以为输出是
photo2.jpg
,但经过
strnatcmp
后
输出的结果是
photo12.jpg.
strnatcasecmp
是这个函数也是忽略字母大小写后,进行比较。
使用模糊比较
similar_text
作用在两个字符串,返回它们中相匹配的个数。
soundex()
计算出一个关键值。
感觉用得少,不总结。
(
10
)字符串的替换
php
中提供了强大的字符串替换功能,可以使用
str_replace()
和
strtr()
两个函数实现字符替换功能。他们都可以将给定字符串的指定部分用另外一个字符串替换。
str_replace()
函数有三个参数,第一个参数称为目标对象,第二个参数是替换对象,最后一个参数是所要处理的字符串。通俗说:用第二个字符串替换第三个字符串中的第一个字符串对应的字符串。
eg
:
str_replace("\\","",$json);
strtr
也叫字符串翻译。我认为没有必要记忆这么多相同功能的函数。
J
(
11
)字符串的格式化
在
php
中可以使用
printf()
和
sprintf()
两个参数有相同的参数列表,并且都支持多个参数。其中,第一个参数是格式化字符串,可以包含以百分号开始,且以格式类型字符结束的格式单元。格式单元的数量可以任意。函数中余下的参数变量将按顺序放到这些单元中格式化。
<?
php
//
日期的表示
$date
=
sprintf
(
"%04d-%02d-%02d"
,
2006
,
9
,
3
);
//
返回
"2006-09-03"
echo
$date
;
//
价格的表示
$money1
=
1038.45
;
$money2
=
2154.75
;
$sum_money
=
sprintf
(
"%01.2f
¥
"
,
$money1
+
$money2
);
//
返回
"3193.20
¥
"
echo
$sum_money
;
//
整数和字符串
$format
=
"There ara %d dogs in %s."
;
printf
(
$format
,
"5.1"
,
"my room"
);
//
输出
There ara 5 dogs in my room.
//
一个百分比
printf
(
"%.2f%%"
,
32.1
);
//
输出
"32.10%"
?>
格式化数字
我们经常在国际惯例中发现,表示价格或其他数字,经常用到千位分隔符。
number_format 2
种用法:
第一种:
<?
php
$number
=
1234.5678
;
echo
number_format
(
$number
);
//
没有小数,进行了四舍五入
echo
number_format
(
$number
,
2
);
//
保留
2
位小数,也进行了四舍五入
?>
这种也是我们常用的。而在个别地区的数字表示方式。例如数字的格式表示为“
1 234,56”
<?
php
$number
=
1234.5678
;
echo
number_format
(
$number
,
2
,
','
,
' '
);
?>
其中前两个参数不用多说,第三个参数是小数点的表示,第四个参数是千位分隔符号。
关于此次
php
学习,是项目用
php
,所以我学习
php
,刚开始没有想到
php
有那么强大。随后发现其非常强大,但是学习笔记也不打算继续。只是以后在
php
中遇到什么问题,准备
php
手册随时查阅。
posted on 2007-08-23 23:33
-274°C 阅读(812)
评论(0) 编辑 收藏 所属分类:
PHP