比较字符串
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字符串——字符串函数的更多相关文章

  1. VB常用字符串操作函数

    1. ASC(X),Chr(X):转换字符字符码 [格式]: P=Asc(X) 返回字符串X的第一个字符的字符码 P=Chr(X) 返回字符码等于X的字符 [范例]: (1)P=Chr(65) ‘ 输 ...

  2. php-设置关键词高亮的字符串处理函数

    /** * 设置关键词高亮的字符串处理函数 * @param [string] $str [要高亮的字符串] * @param array $word_arr [关键词] */function set ...

  3. JS字符串格式化函数 string.format

    原生JS写的仿C#的字符串format函数,在此基础上又增加了便于JS使用的字面量对象参数. 参照C#中的规则,调用的时候会检测字符串格式,如果字符串格式不规范,或者传入的参数为null或undefi ...

  4. JS字符串替换函数:Replace(“字符串1″, “字符串2″),

    JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...

  5. Excel怎样从一串字符中的某个指定“字符”前后截取字符及截取字符串常用函数

    怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符. 如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作, 另外,怎么样从右边截取字符,就是和left()函数相反的那 ...

  6. SQL注入的字符串连接函数

    在select数据时,我们往往需要将数据进行连接后进行回显.很多的时候想将多个数据或者多行数据进行输出的时候,需要使用字符串连接函数.在sqli中,常见的字符串连接函数有concat(),group_ ...

  7. C语言字符串处理函数

    函数名: strcpy  功  能: 拷贝一个字符串到另一个  用  法: char *stpcpy(char *destin, char *source);  程序例:  #include < ...

  8. JavaScript中常见的字符串操作函数及用法

    JavaScript中常见的字符串操作函数及用法 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信 ...

  9. 飘逸的python - 增强的格式化字符串format函数

    自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和 ...

  10. Python:常见操作字符串的函数

    Python中提供了很多操作字符串的函数: string = "hello, my dear python!" string.capitalize() #将字符串中的第一个字母大写 ...

随机推荐

  1. spring下redis使用资料

    参考资料地址: spring集成redis Spring缓存注解@Cacheable.@CacheEvict.@CachePut使用 redis常用命令 redis持久化(RDB与AOF) Redis ...

  2. 初学nodejs之安装Express中遇到的问题: error: option `-v, --view <engine>' argument missing

    Windows安装下载nodejs地址:http://nodejs.org/download/ node -v 查看安装版本,输出版本即安装成功 之前学习了nodejs的基础,今天安装Express框 ...

  3. MSSQL存储过程实现拼接sql的注意点

    这里我昨天碰到的问题就是执行一段根据变量tableName对不同的表进行字段状态的更改.由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面. 这里就出现了一个问题,我花费 ...

  4. [javaSE] 网络编程(TCP通信)

    客户端A与服务端建立通信,服务端获取到客户端A的Socket对象,通过这个通路进行通信 客户端: 获取Socket对象,new出来,创建客户端的Socket服务,构造参数:Sting主机,int 端口 ...

  5. ECMAScript 5和ECMAScript6的新特性以及浏览器支持情况

    ECMAScript简介: 它是一种由Ecma国际(前身为欧洲计算机制造商协会)制定和发布的脚本语言规范,javascript在它基础上经行了自己的封装.但通常来说,术语ECMAScript和java ...

  6. [转]vue数据绑定(数据,样式,事件)

    1.mounted 与 methods 与 computed 与 watched区别 From:https://blog.csdn.net/qinlulucsdn/article/details/80 ...

  7. Laravel 支付宝支付异步通知

    支付宝支付通知有前端通知(GET)和服务器异步通知(POST) 在配置支付宝支付时,需要注意的问题就是支付宝的回调操作: 1.在laravel中应该将支付宝通知路径组织csrf验证,否则会导致419错 ...

  8. HBuilder开发App Step1——环境搭建,HelloMUI 以及真机调试

    No1. 必须搭建java环境 只需要最基础的java环境,也就是cmd下可以运行java和javac即可, 具体教程请自行百度,都会有很详细的教程,这里不重点介绍. No2. 下载安装HBuilde ...

  9. js面向对象设计之class中一些坑和技巧

    this的指向 super 类工厂,类中定义方法名时,可以使用字符串,这就可以创建工厂函数(类似模板类) Generator 函数 静态属性和私有属性.私有方法 new.target

  10. dynamics 365 AI 解决方案 —— 介绍

    Digital transformation has been reshaping our world and artificial intelligence (AI) is one of the n ...