PHP字符串——字符串函数
比较字符串
PHP有两个操作符和6个函数用于字符串间相互比较。
精确比较
你可以用==和===操作符来比较两个字符串是否相等。这两个操作符的不同在于它们如何处理非字符串数据类型的操作数。==操作符把非字符串操作数转换成字符串,所以它认为3和”3“是相等的。===操作符不进行转换,并且如果参数的数据类型不同就返回false。
比较操作符(<、<=、>和>=)也用于字符串。当比较操作符的一个参数是数字时,其它参数也将被转换为数字。
要明确地将两个数作为字符串比较,可以在必要时先把数字转换为字符串,使用strcmp()函数。
处理和查找字符串
子串,substr函数复制部分字符串
$piece=substr(string,start[,length]);
start参数是在string中要开始复制的位置,如果是0的话,就是说从字符串开头开始复制。length参数是要复制字符的个数(默认是复制到字符串末尾)。例如:
$name="Fred Flintstone";
$fluff=substr($name,6,4); //$fluff 是"lint"
$sound=substr($name,11); //$sound是"tone"
要知道一个小字符串在一个大字符串中出现的次数,可以使用substr_count()函数:
$number=substr_count(big_string,small_string);
substr_replace()函数允许使用不同方式对字符串进行修改:
$string=substr_replace(original,new,start[,length]);
函数通过start(0的意思是字符串的开头)和length指定的值,用字符串new替换original的一部分。如果没有给出第四个参数,substr_replace()删除从start到字符串末尾的文字。
例如:
$greeting="good morning citizen";
$farewell=substr_replace($greeting,"bye",5,7);
//$farewell为"good bye citizen"
设定length为0来实现无删除的插入:
$farewell=substr_replace($farewell,"kind",9,0);
//$farewell 为"good bye kind citizen"
设定new为""来来实现无插入的删除:
$farewell=substr_replace($farewell,"",8);
//$farewell为"good bye"
下面是说明如何在字符串的开头插入内容:
$farewell=substr_replace($farewell,"now it's time to say",0,0);
//$farewell为"now it's time to say good bye"'
如果start为负值,则指定从字符串末尾开始到字符串开头替换的字符数:
$farewell=substr_replace($farewell,"riddance",-3);
//$farewell为"now it's time to say good riddance"
如果length为负值,则指定从字符串末尾开始删除的字符个数:
$farewell=substr_replace($farewell,"",-8,-5);
//$farewell为"now it's time to say good dance"
各种字符串函数
strrev()函数收一个字符串然后返回一个翻转顺序的拷贝:
$string=strrev(string);
例如:
echo strrev("There is no cabal"); //labas on si erehT
str_repeat()函数接收一个字符串和一个计数参数,然后返回一个由参数string重复count次组成的新字符串:
$repeated=str_repeat(string,count);
例如,创建一个分隔线:
echo str_repeat('-',40);
str_pad()函数用另一个字符串填充一个字符串。可以选择用什么样的字符串来填充,以及加在左边、右边或两边都加:
$padded=str_pad(to_pad,length[,with[,pad_type]]);
默认是以空格加在字符串右边:
$string=str_pad('Fred Flintstone',30);
echo "$string:35:Wilma";
Fred Flintstone :35:Wilma
可选的第三个参数是要增加的字符串:
$string=str_pad('Fred Flintstone',30,'.');
echo "{$string}35";
Fred Flintstone........35
可选的第四个参数可以是STR_PAD_RIGHT(默认)、STR_PAD_LEFT或STR_PAD_BOTH(左右都加,长度均分,使原字符串居中对齐)。例如:
echo '['.str_pad('Fred Flintstone',30,'',STR_PAD_LEFT)."]\n";
echo '['.str_pad('Fred Flintstone',30,'',STR_PAD_BOTH)."]\n";
[ Fred Flintstone]
[ Fred Flintstone ]
分解字符串
PHP提供几个函数来将字符串分解为更小的部分。按复杂性递增排序,它们是explode()、strtok()、sscanf()。
$array=explode(separator,string[,limit]);
implode(),用含有几个较小字符串的数组创建一个大字符串:$string=implode(separator,array);join()函数是implode()函数的别名。
字符串查找函数
有一些函数用于在一个较大字符串中查找字符串或字符。它们分为3个系列:strpos()和strrpos()返回1个位置,strstr()、strchr()等返回找到的字符串,strspn()和strcspn()返回字符串的开头有多少与掩码匹配。
按字符的ASCII顺序值来查找。因此,下面的函数调用是相等的(因为44是逗号的ASCII值):
$pos=strpos($large,","); //查找第一个逗号
$pos=strpos($large,44); //也查找第一个逗号
如果没有找到指定的子串,所有的字符串查找函数都会返回false。如果子串出现在字符串的开头,函数就返回0。因为false可以转换为数字0,所以在测试失败时使用===来比较返回值:
if($pos===false){
//没有找到子串
}else{
//找到子串,$pos是字符串的偏移量。
}
返回位置的查找
strpos()函数查找一个小字符串在较大字符串中第一次出现的位置:
$position=strpos(large_string,small_string);
如果没有找到小字符串,strpos()返回false。
strrpos()函数查找某个字符(注意是单个字符而不是字符串)在字符串中最后一次出现的位置。它的参数及返回值类型和strpos()相同。
如果将一个字符串作为第二个参数传递给strrpos(),只查找参数字符串的首字符。
返回剩余字符串的查找
strstr()函数查找一个小字符在大字符串中第一次出现的位置,并返回从小字符串开始的部分。
strstr()的变种有:
stristr()//不区分大小写的strstr();
strchr()//strstr()的别名
strrchr()//查找字符在字符串中最后出现的位置
和strrpos()一样,strrchr()向后查找字符串,但是都只对字符,而不是一整个字符串。
strspn()和strcspn()函数告诉你字符串开头有多少个指定的字符:
$length=strspn(string,charset);
strcspn()里的c代表complement(补足物),它说明字符串的开头有多少不是由字符集中的字符组成。当感兴趣的字符比不感兴趣的字符多时,使用strcspn()函数。
分解URL
parse_url()函数返回一个由URL成分组成的数组:
$array=parse_url(url);
例如:
$bits=parse_url('http://me:secret@example.com/cgi-bin/board?user=fred);
print_r($bits);
Array
(
[scheme]=>http
[host]=>example.com
[user]=>me
[pass]=>secret
[query]=>user=fred
)
得到的数组键名可能为scheme、host、port、user、pass、path、query和fragment。
PHP字符串——字符串函数的更多相关文章
- VB常用字符串操作函数
1. ASC(X),Chr(X):转换字符字符码 [格式]: P=Asc(X) 返回字符串X的第一个字符的字符码 P=Chr(X) 返回字符码等于X的字符 [范例]: (1)P=Chr(65) ‘ 输 ...
- php-设置关键词高亮的字符串处理函数
/** * 设置关键词高亮的字符串处理函数 * @param [string] $str [要高亮的字符串] * @param array $word_arr [关键词] */function set ...
- JS字符串格式化函数 string.format
原生JS写的仿C#的字符串format函数,在此基础上又增加了便于JS使用的字面量对象参数. 参照C#中的规则,调用的时候会检测字符串格式,如果字符串格式不规范,或者传入的参数为null或undefi ...
- JS字符串替换函数:Replace(“字符串1″, “字符串2″),
JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...
- Excel怎样从一串字符中的某个指定“字符”前后截取字符及截取字符串常用函数
怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符. 如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作, 另外,怎么样从右边截取字符,就是和left()函数相反的那 ...
- SQL注入的字符串连接函数
在select数据时,我们往往需要将数据进行连接后进行回显.很多的时候想将多个数据或者多行数据进行输出的时候,需要使用字符串连接函数.在sqli中,常见的字符串连接函数有concat(),group_ ...
- C语言字符串处理函数
函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include < ...
- JavaScript中常见的字符串操作函数及用法
JavaScript中常见的字符串操作函数及用法 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信 ...
- 飘逸的python - 增强的格式化字符串format函数
自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和 ...
- Python:常见操作字符串的函数
Python中提供了很多操作字符串的函数: string = "hello, my dear python!" string.capitalize() #将字符串中的第一个字母大写 ...
随机推荐
- WCF异常信息
1.服务“CJ.Demo.Conso.WcfService.EmployeeMngService”有零个应用程序(非基础结构)终结点.这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务 ...
- 关于Mysql+EF6本地运行和发布没有问题,发布到服务器上出现问题的解决方案
这个问题折磨了我差不多两天,网上各种方法也找了个遍,但是都没有解决我的问题,后面通过自己仔细分析问题和排查,终于把问题解决了,以下是我的解决问题的步骤,希望能帮到各位,不要再被这些问题坑了 1,项目实 ...
- Spring-boot简单的理解
SpringBoot启动 SpringApplication.run(MyBootApplication.class); SpringApplication.run启动SpringBoot应用,主要过 ...
- WebApi使用swagger ui自动生成接口文档
之前就写到.最近正在使用webapi.这里介绍一个实用的东西swageer ui现在开发都是前后端分开.我们这里是给前端提供api.有时候对于一个api的描述,并不想专门写一份文档.很浪费时间.swa ...
- 网络基础1_TCP和HTTP
TCP/IP 是互联网相关的各类协议族的总称,并且进行分层,分为应用层,传输层,网络层,数据链路层这四层协议,分层的好处,是便于后期的优化与改进,扩展性好 应用层:主要为客户提供应用服务, ...
- java设计模式-----15、适配器模式
概念: Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式. 举个例子:我们使用电脑,家里的电源是220V的,而我们的电脑是18V的,这时如 ...
- QT5.4.2静态编译(包含QtWebKit),在VS2013上创建项目,并成功运行
Qt项目发布的exe程序,默认是以动态链接形式的,这样发布后的程序会附带好多Qt自己的dll库,这样文件数量不仅多,而且移植到其他电脑上的时候,还可能会遇到,提示缺其他库等各种运行不起 ...
- drupal7图片样式无法生成与显示
正常设置了图像的样式,并且为内同类型正确设置了显示的样式.但是上传图片后,却并没有在对应的文件夹下生成对应的缩略图.自然没有显示. 网上查询了一下,需要为nginx添加两个设置: location @ ...
- C语言各类型大小,结构体大小 sizeof(struct A)
C语言类型大小总览 编译器pack指令 #pragma pack(n)——定义n字节对齐 C++固有类型的对齐取编译器对齐与自身大小中较小的一个 32位C++默认8字节对齐.gcc编译器默认4字节对齐 ...
- Android分享---调用系统自带的分享功能
以前我们总想到友盟等平台分享功能的集成,集成这玩意还得下载对应的jar包.当然,用这些平台的分享并不是说什么好处都没有,至少人家的统计功能还是很实用的.不过有的时候我们是不需要多余功能的,只需要能分享 ...