1. 字符串操作
字符串操作在PHP编程中占有重要的地位,几乎所有PHP脚本的输入与输出都要用到字符串,尤其是在PHP项目中开发过程中,为了实现某项功能,经常要对某些字符串进行特殊处理,如获取字符串的长度、截取字符串、替换字符串等;
2 去除字符串的首尾空格和特殊字符
在有些情况下,字符串不允许出现空格和特殊字符,所以需要去除字符串中的空格和特殊字符; PHP提供了如下函数:time()函数 用于去除字符串首尾空格和特殊字符,ltrim()函数 用于去除字符串左边的空格和特殊字符,rtrim()函数 用于去除字符串右边的空格和特殊字符;
2.1 trim()函数
trim() 函数 用于去除字符串的首尾空格和特殊字符,并返回去掉空格和特殊字符后的字符串; 语法格式如下:
string tim(string str [,string charlist]);
参数 str 是要操作的字符串对象:参数 charlist 为可选参数,指定需要从字符串中删除哪些字符,若不设置该参数,所有的可选字符都将被删除; 参数 chariist 的可选值如下表:
例子:
<?php
$bbc = "\r\r(?青青原上草,一岁一枯荣!?)" ;
echo trim($bbc);
echo "\r";
echo trim($bbc,"\r\r(??)");
?>
执行结果如下所示:
2.2 ltrim()函数
ltrim()函数用于去除字符串左边的空格和特殊字符,语法格式如下:
string ltrim(string str[,string charlist]);
例子:用 ltrim() 函数去除字符串左边的空格及特殊字符
<?php
$bbc = "\r\r(?青青原上草,一岁一枯荣!?)" ;
echo ltrim($bbc);
echo "<br>";
echo ltrim($bbc,"\r\r(?");
?>
执行结果如下所示:
2.3 rtrim() 函数
rtrim() 函数 用于去除字符串右边的空格和特殊字符,语法格式如下:
string rtrim(string str [,string charlist]);
例子:用trtim() 函数去除字符右边的空格及特殊字符
<?php
$bbc = "\r\r(?青青原上草,一岁一枯荣!?)" ;
echo rtrim($bbc);
echo "<br>";
echo rtrim($bbc,"?)");
?>
执行结果如下所示:
2.4 wordwrap() 函数
wordwrap() 函数 按照指定长度对字符串进行折行处理,可能会在行的开头留下空白字符; 语法格式如下:
wordwrap(string,width,break,cut)
例子:按照指定长度对字符串进行折行处理
<?php
$bbc = "长单词的一个例子:Supercalifragulistic";
echo wordwrap($bbc,15,"<br>\n")
?>
执行结果如下所示:
3. 转义、还原字符串数据
转义、还原字符串的方法有两种:一种是手动转义、还原字符串数据;另一种是自动转义、还原字符串数据;
3.1 手动转义、还原字符串数据
字符串能用单引号(’’)、双引号("")、界定符(<<<) 3种方法定义,而指定一个字符串的最简单方法就是用单引号(’’)括起来; 当使用字符串时,可能在字符串中存在这几种易于与PHP脚本混淆的字符,所以必须对这几种字符作转义处理,方法是在这些字符的前面使用转义符; "\" 是一个转义符,紧跟在 “/” 后面的第一个字符将变得没有意义或存在特殊含义; 若要在字符串中表示单引号,要用到反斜线()进行转义; 例子:使用转义字符""对字符串进行转义
<?php
echo "I am teacher=\"谢某\";";
?>
执行结果如下所示:
简单的字符串,建议用手动方法进行字符转义;对于数据量较大的字符串,建议用自动转义实现字符串转义; 手动转义字符串,可用 addcslashes()函数 进行字符串还原;
3.2 自动转义、还原字符串数据
自动转义、还原字符串数据,可用PHP提供的 addslashes() 和 stripslashes() 函数来; 语法格式如下: addslashes() 函数 用来为字符串加入反斜线 "\" ;
string stripslashes(string str)
语法格式如下: stripslashes() 函数 用来将使用 addslashes() 函数 转义后的字符串返回原样;
string stripslashes(string str);
例子:用自动转义字符函数 addslashes() 对字符串进行转义,再使用 stripslashes() 函数进行还原;
<?php
$bbc = "I am teacher = '谢某';";
echo $bbc."<br>";
$bbc1 = addslashes($bbc);
echo $bbc1."<br>";
$bbc2 = stripslashes($bbc1);
echo $bbc2."<br>";
?>
所有数据被插入数据库之前,有必要应用 addslashes() 函数 进行字符串转义,避免特殊字符未经转义在插入数据库时出现错误; 注意: 对于用 addslashes() 函数 实现的自动转义字符,可使用 stripslashes() 函数 进行还原,但数据在插入数据之前必须再次进行转义; PHP 通过使用 addcslashes() 和 stripcslashes() 函数 来实现对指定范围内的字符串进行自动转义和还原;
3.3 addcslashes() 函数
addcslashes() 转义字符串中的字符,即在指定字符的前面加上反斜线 "/" ; 语法格式如下:
string addcslashes(string str,string charlist)
参数 str 为将要操中的字符串;参数 charlist 指定要在字符串中的哪些字符前加上反斜线; 若参数 charlsit 中包含 \n.\r 等字符,将以C语言风格转换,而其他非字母数字且 ASCII 码低于 32 或高于 126 的字符均转换成八进制表示形式; 在设置参数 charlist 的范围时,需明确开始和结束范围内的字符串;
3.4 stripcslashes() 函数
语法格式如下: stripcslashes() 函数 用来对 addcslashes() 函数 转义后的字符串进行还原;
string stripcslashes(string str)
例子:用addcslashes() 函数字符串 “Python 编程” 进行转义后,使用 stripcslashes() 函数对转义后的字符串进行还原;
<?php
$bbc = "Python 编程";
echo $bbc."<br>";
$bbc1 = addcslashes($bbc,"Python 编程");
echo $bbc1."<br>";
$bbc2 = stripcslashes($bbc1);
echo $bbc2."<br>";
?>
5. 获取字符串的长度
5.1 strlen() 函数
使用strlen() 函数 可获取字符串的长度; 语法格式如下:
int strlen(string str)
例子:使用 strlen() 函数获取字符串的长度
<?php
$bbc = "Python 编程";
echo strlen($bbc);
?>
执行结果如下所示:
注意: 汉字 占用两个字符,数字、英文、小数点、下划线和空格占用一个字符; strlen() 函数 在获取字符串长度的同时,也能用来检测字符串的长度; 使用 strlen() 函数 对输入的字符串长度进行检测,若长度不符,弹出错误提示框; 步骤如下:
- 新建一个PHP动态页面,保存为1.php;
- 添加一个表单,将表单的属性设置为 action,保存为1.php;
- 应用HTML标记设计页面,添加一个 user 文本框和一个 pwd 文本框;
- 新建一个 PHP 动态页面,保存为 2.php;
5.2 strpos() 函数
strpos() 函数 用来检索字符中指定的字符或文本; 若找到匹配,返回首个匹配的字符位置,若未找到匹配,返回FALSE; 例子:检索字符串"I am teacher!“中的"ea”;
<?php
echo strpos("I am teacher!","ea");
?>
执行结果如下所示:
注意: 字符是从0开始而不是从1开始;所以”ea“的位置是6(不是7);
6 截取字符串
substr() 函数
格式如下:
string substr{string str,int start[,int length]}
substr() 函数的参数如下表所示:
例子:使用 substr() 函数截取字符串中指定长度的字符;
<?php
echo substr("Python is good!",0);
echo "<br>";
echo substr("Python is good!",2,6);
echo "<br>";
echo substr("Python is good!",-4,3);
echo "<br>";
echo substr("Python is good!",0,-4);
echo "<br>";
?>
执行结果如下所示:
在开发Web程序时,为了保证页面布局的合理,要对一些超长文本进行部分显示; 例子:用 substr() 函数截取超长文本的部分字符串,剩余部分用 ”……“ 代替
<?php
$bbc = "君不见黄河之水天上来,奔流到海不复回。君不见高堂明镜悲白发,朝如青丝暮成雪。人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。烹羊宰牛且为乐,会须一饮三百杯。岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,
呼儿将出换美酒,与尔同销万古愁。";
if(strlen($bbc)>35){
echo substr($bbc,0,26)."...";
}
else{
echo $bbc;
}
?>
执行结果如下所示:
注意: 用 substr() 函数截取中文字符串时,若截取的字符个数是奇数,会导致截取的中文字符串出现乱码,因为一个中文占两个字符;substr() 函数更适用于英文字符串的截取,若想要对中文字符串进行截取,且要避免乱码,最好就是用 substr() 编写一个自定义函数;
结束语
若这篇文章有帮到你,给个赞,收个藏,欢迎大家留言评论; 若文章有什么错误,欢迎大家指教。
|