字符串处理-------前言
在每天的编程工作中 处理、调整以至最后控制字符串是很重要的一部分 一般也认为这是所有编程语言的基础
字符串格式化
整理字符串的第一步是清理字符串中多余的空格 虽然这一部操作不是必需的 但如果要将字符串存入一个文件或数据库中 或者将它和别的字符串进行比较 这就是非常有用的
chop0函数移除字符串后面多余的空白 包括新行
ltrim()函数移除字符串起始处多余空白
rtrim()函数移除字符串后面多余的空白 包括新行 此函数是chop()的别名
trim()函数移除字符串两边多余的空白
代码
<?php
echo trim(' PHP ') ;
?>
PHP具有一系列可供使用的函数来重新格式化字符串 这些函数的工作方式是各不相同的 nl2br()函数将字符串作为输入参数 用XHTML中的 标记代替字符串中的换行符
代码
<?php
echo nl2br("This is a Teacher! This is a Student!");
?>
将特殊字符转换为HTML等价形式 可以使用htmlentities()和htmlspecialchars函数 如果想要去掉字符串中的HTML去掉 可以使用 strip_tags( )函数
代码
<?php
echo htmlentities('<strong> 我是张三!</strong>'); //转换所有字符
echo htmlspecialchars('<strong> 我是张三!</strong>') //转换特殊字符
echo strip_tags('< strong>我是张三!')//去掉了< strong>
?>
对于字符串来说 某些字符肯定是有效的 但是当将数据插入到数据库中的时候可能会引起一些问题 因为数据库会将这些字符解释成控制符 这些有问题的字符就是引号(单引号和双引)、反斜杠()和NULL字符
PHP提供了两个专门用于转义字符串的函数 在将任何字符串写到数据库之前 应该使用addslashes()将它们重新格式化
在调用了addslashes()后 所有的引号都加了斜杠 而stripslashes()函数去掉了这些斜杠
代码
<?php
echo addslashes('This isa"Teacher! ');
?>
可以重新格式化字符串中的字母大小写
strtoupper()函数将字符串转换为大写
strtolower()函数将字符串转换成小写
ucfirst()函数将第一个字母转换为大写
ucwords()函数将每个单词第一个字母转换为大写
代码
<?php
echo strtoupper(' yc60 com@gmail com ');
?>
填充字符串函数: str_pad( )将字符串用指定个数的字符填充字符串
代码
<?php
echo str_pad(' Salad' 10) ' is good ';
?>
操作子字符串
通常 我们想查看字符串的各个部分 例如 查看句子中的单词 或者将一个域名或电子邮件地址分割成一个个的组件部分 PHP提供了几个字符串函数来实现此功能
使用函数explode()、implode()和join()
为了实现这个功能 我们将使用的第一个函数是explode()
使用implode()或join()函数来实现与函数explode()相反的效果 这两个函数的效果是一致的
代码
<?php
$email=' yc60 com@gmail com ';
$email_array=explode('@' $email);
?>
使用strtok()函数
strtok()函数一次只从字符串取出一些片段(称为令牌) 对于一次从字符串中取出一个单词的处理来说 strtok()函数比explode()函数的效果更好
代码
<?php
$str="I will be#back";
$tok=strtok($str " #");
while($tok){
echo"$tok ";
$tok=strtok(" #");
?>
分辨率符准;str split()返回一个数组;其中香酸组元素外别且字符串叠数中的一个字符串 running
道理字符串;&Frev()可以将一个字符串遮反过来
字符串比较
到目前为止 我们已经用过"=="号来比较两个字符串是否相等 使用PHP可以进行一些更复杂的比较 这些比较分为两类:部分匹配和其他情况
字符串的排序;stremp()、800aseemp()和strnatomp()
该函数需要两个进行比较的参数字符串 如果这两个字符串相等 该函数返回0 如果按字典顺序strl和str2后面(大于str2)就返回一个正数 如果strl小于str2就返回一个负数 这个函数是区分大小写的
函数strcasecmpO除了不区分大小写之外 其他和stremp()一样
函数strnatemp()及与之对应的不区分大小写的strnateaseemp()函数是在PHP4中新增的 这两个函数按“自然排序”比较字符串 所谓自然排序是按人们习惯的顺序进行排序
使用strspn()函数返回一个字符串中包含有另一个字符串中字符的第一部分的长度 也就是求两个字符串之间相同的部分
代码
<?php
echo strspn('gmail' 'yc60 com@gmail com ');
?>
对于以上的字符率函数 有些可以用于审文 但有些却不适用中文 所以 PHP提供了专门的函数来解决这样的问题
mb_strien( )对AE的函数为 sthn( )求字符串的长度
ad sestr() 对应的函数为strstr() 求某字符串到结尾的字符
mb_strpos( )对应的函数为 strpos( )求出字符最先出现处
zib_substr( )对应的函数为 substr( )取出指定的字符串
mb_substr_count( )对应函数为 subst_str( )返回字符串出现的次数
使用strlen()函数测试字符串的长度
可以使用函数 strlen()来检查字符串的长度 如果传给它一个字符串 这个函数将返回字符串的长度 阈翅 strlen(“hello”)将退回5、
<?php
echo strlen("This is a Teacher!"):
?>
确定字符串出现的频率; substr_count( )返回一个字符串在另一个字符串中出现的次数
echosubstr_count(yc60 com@gmail com ', 'c);
查找替换字符串
通常 我们需要检查一个更长的字符串中是否含有一个特定的子字符串 这种部分匹配通常比测试字符串的完全等价更有用处
在宇符串中查找字符串:strstr()、strchr()、strrchr()和stristr()
函数strstr()是最常见的 它可以用于在一个较长的字符串专供查找匹配的字符串或字符 请注意 函数strchr()和strstr()完全一样
代码
<? php
echo strstr('yc60 com@gmail com ' '@');
?>
函数strstr()有两个变体 第一个变体是stristr() 它几乎和strstr()一样 其区别在于不区分字符大小 对于我们的只能表单应用程序来说 这个函数非常有用 因为用户可以输入"delivery"、“Delivery"和"DELIVERY”
第二个变体是strrchr() 它也几乎和strstr()一样 只不过是strstr()的别名
查找字符串的位置:strpos()、strrpos()
函数strpos()和strrpos()的操作和strstr()类似 但它不是返回一个子字符串 而返回子字符串needle在字符串haystack中的位置 更有趣的是 现在的PHP手册建议使用strpos()函数代替strstr()函数来查看一个子字符串在一个字符串中出现的位置 因为前者的运行速度更快
<? php
echo strrpos('yc60 com@gmail com ' 'c');
?>
替换字符串
对于以上的字符率函数 有些可以用于审文 但有些却不适用中文 所以 PHP提供了专门的函数来解决这样的问题
中文字符可以是gbk,utf8,gb2312
字符串
mb_strien() 对AE的函数为 sthn() 求字符串的长度
ad sestr() 对应的函数为strstr() 求某字符串到结尾的字符
mb_strpos() 对应的函数为 strpos() 求出字符最先出现处
zib_substr() 对应的函数为 substr() 取出指定的字符串
mb_substr_count() 对应函数为 subst_str() 返回字符串出现的次数