PHP系列PHP字符串处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP系列PHP字符串处理相关的知识,希望对你有一定的参考价值。
php字符串处理
1、字符串的处理方式(分割匹配找查替换)
//声明一个关联数组,数组名为$lamp, 成员有4个
$lamp = array( ‘os‘=>‘Linux‘,‘webserver‘ =>‘Apache‘, ‘db‘=>‘mysql‘, ‘language‘=>‘php‘ );
//可以解析,双引号中对于数组索引,右方括号(])标志着索引的结束,
//但是注意:不要在[]中使用引号,否则会在引号处结束
echo "A OS is $lamp[os].";
//不能解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错
echo "A OS is $lamp[‘os‘].";
//可以解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错
echo "A OS is {$lamp[‘os‘]}.";
echo "A OS is {$lamp[os]}."; //可以解析,注意PHP将数组下标看作常量名,并且常不存在时将常量名称转为了字中,效率低
echo "This square is $square->widthmeters broad."; //可以解析,对象中的成员也可以解析
echo "This square is$square->width00 centimeters broad."; //不能解析,可以使用花括号解决
echo "This square is{$square->width}00 centimeters broad."; //可以解析, 使用花括号解决
2、常用的字符串输出函数
Echo() 输出字符串 //echo 指令方式可以打印多个值
Print() 输出一个字符串 //有返回值、
区别:
Print有返回值 、echo没有
Print不能打印多个值、但echo指令方式可以打印多个值
Echo “aa”,”bb”,”cc”;
Die() exit()输出一条消息、并退出当前脚本
Printf() 输出格式化字符串
Sprint()把格式化的字符串写入一个变量中
Sprint(“%s”, $int);
%% 返回百分比符号
%b 二进制数
%c 依照ASCII值的字符
%d 带符号的十进制数
%e 可续计数法(1.5e3)
%u 无符号十进制数
%f或%F 浮点数
%o 八进制数
%s 字符串
%x或%X 十六进制数
3、字符串处理函数
去除空格和字符串填充函数
Ltrim(string str[,string charlist])
返回值:字符串
本函数用来删去字符串中的前导空格
Rtrim(string str[,stringcharlist])
返回值:字符串
本函数用来删除字符串的后缀空格
Trim(string str[,string charlist])
返回值:字符串
截去字符串首尾的空格、本函数返回字符串string 首尾的空白字符去除后的字符串
//声明一个字符串、其中左侧有三个空格、右侧有二个空格、总长度9个字符
$str = “ lamp ”;
Echo strlen($str); //输出字符串的总长度为9
Echo strlen(ltrim($str)) //去掉左侧空格后的长度输出为6
Echo strlen(rtrim($str))//去掉右侧空格后的长度输出为7
Echo strlen(trim($str))//去掉二侧空格后的长度输同为4;
$str = “123 This is a test…”;
Echo ltrim($str, “0…9”);//过虑掉字符串左侧的数字、输出为This is a test…
Echo rtrim($str, “.”); //过虑掉字符串右侧所有“.”;输出为:123 Thisis a test
Echo trim($str, “0..9 A..Z”); //过虑掉字符串二端的数字和大写字母还有“.”
输出为:his is a test
Str_pad()按需要对字符串进行填充
语法:
String str_pad(string input, int pad_length,STR_PAD_LEFT)
STR_PAD_LEFT 字符串左添加
STR_PAD_RIGHT 字符串右添加
STR_PAD_BOTH 字符串二端添加
$str =”LAMP”;
Echo str_pad($str, 10); //指定长度为10、默认空格在右边填补“LAMP”;
Echo str_pad($str, 10,”---”,STR_PAD_LEFT)//指定长度为10、 指定在左边填补“---lamp”;
Echo str_pad($str, 10, “--”,STR_PAD_BOTH)//指定长度为10、指定二端填补“---lamp---”
Echo str_pad($str,6,”--”,STR_PAD_RIGHT);//指定长度为6、默认在右边填补“lamp--”;
字符串大小写的转换
Strtolower(string)//将string全部变成小写字符
Strtoupper(string)//将string全部就成大写字符
Ucfirst(string)//将字符串第一个字符改大写
Ucwords(string)//将字符串每个字符第一个字母改大写
4、和html标签相关联的字符串格式化
Htmlspecialchars()把预定义的字符"<" (小于)和 ">" (大于)转换为 HTML 实体
Stripslashes()函数删除由addslashes()函数添加的反斜杠
Addslashes()在每个双引号(")前添加反斜杠
<from action=”” method=”post”>
Title:<input type=”text” name=”title” value=”” />
<input type=”submit” name=”dosubmit” value=”提交” />
</form>
<?php
If(isset($_POST[‘dosubmit’])){
$title= $_POST[‘title’];
Echo stripslashes(addslashes($title)).”<br>”;
Echo htmlspecialchars($title);
}
?>
Strip_tags()函数剥去字符串中的 HTML、XML 以及 PHP 的标签
strcmp(string1,string2)比较两个字符串(区分大小写)
本函数返回:
0 如果两个字符串相等
-1 如果 string1 小于 string2
1 如果 string1 大于 string2
Strcasecmp(string1,string2)比较两个字符串、不区分大小写(用法同上)
按自然顺序排序(用法同上)
Strnatcmp(string1,string2)区分大小写
Strnatcasecmp(string1,string2)不区分大小写
一、不用php函数、用方法写一个反转字符串的函数
$str = "www.bitedy.com";
function fan($str){
$n= "";
$m= strlen($str)-1;
for($i=$m;$i>0; $i--){
$n.=$str{$i};
}
return $n;
}
echo fan($str);
//echostrrev($str); 返转字符串、显示为:moc.ydetib.www
二、写一函数将字符串进行三个分组
$str = "1234567890";
function nformat($str){
$n= ""; //临时的变量
$m= strlen($str);//获取字符串长度
$k= $m % 3;//让整个长度和3取余之后余数是多少=0
for($i=0;$i<$m; $i++){
if($i%3== $k && $i!=0){
$n.=",";
}
$n.=$str{$i};
}
return $n;
}
echo nformat($str);
显示为:1,234,567,890
三、请写一个获取文件扩展名的函数
function Demo($str){
if(strstr($str, "?")){
list($file,$act) = explode("?",$str);
}else{
$file= $str;
}
$n = strrpos($file,"/")+1;
$filename = substr($file,$n);
$arr = explode(".",$filename);
echo array_pop($arr)."<br>";
}
Demo("http://www.bitedy.com/www/nat/init.inc.php?username=100");
Demo("http://www.bitedy.com/www/nat/init.inc.php");
Demo("C:/www/nat/init.inc.php");
Demo("init.inc.php");
Demo("/www/nat/init.inc.php");
显示为:php php php php php
strstr(string,search,before_search)搜索字符串在另一字符串中的第一次出现(区分大小写 stristr不区分大小写)
string 必需。规定被搜索的字符串。
Search 必需。规定所搜索的字符串。
Before_search 可选。默认值为 "false" 的布尔值。
如果设置为 "true",它将返回 search 参数第一次出现之前的字符串部分。
explode(separator, string,limit) 把字符串打散为数组
separator必需。规定在哪里分割字符串。
String必需。要分割的字符串。
大于 0 - 返回包含最多 limit 个元素的数组
小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组 0 - 返回包含一个元素的数组
strrpos(string,find,start) 查找字符串在另一字符串中最后一次出现的位置。
String 必需。规定被搜索的字符串。
Find 必需。规定要查找的字符。
Start 可选。规定在何处开始搜索。
substr(string,start,length) 返回字符串的一部分
string 必需。规定要返回其中一部分的字符串。
Start 必需。规定在字符串的何处开始。
正数 - 在字符串的指定位置开始
负数 - 在从字符串结尾开始的指定位置开始
0 - 在字符串中的第一个字符处开始
Length 可选。规定被返回字符串的长度。默认是直到字符串的结尾。
正数 - 从 start 参数所在的位置返回的长度
负数 - 从字符串末端返回的长度
array_pop(array)弹出并返回 array
数组的最后一个单元
四、写一个函数、算出二个文件的相对路径
error_reporting(E_ALL & !E_NOTICE);
function ab($a, $b){
$a= explode("/", trim(dirname($a), "/"));
$b= explode("/", trim(dirname($b), "/"));
$n= max(count($a),count($b));
for($i=0;$i<$n; $i++){
if($a[$i]==$b[$i]){
unset($a[$i]);
unset($b{$i});
}else{
break;
}
}
$path = str_repeat("../",count($b)).implode("/", $a);
return $path;
}
$a = "/a/b/y/12/14.php";
$b = "/a/b/c/d/11/y/24.php";
echo ab($a, $b);
显示为:../../../../y/12
本文出自 “Linux狱长” 博客,请务必保留此出处http://sswqzx.blog.51cto.com/2494644/1965458
以上是关于PHP系列PHP字符串处理的主要内容,如果未能解决你的问题,请参考以下文章