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() #将字符串中的第一个字母大写 ...
随机推荐
- ionic组件清单
整理时间:2017-5-22 官网版本:v3.2.0 / 2017-05-10 / MIT Licensed / Release Notes
- Android 蓝牙操作详解
1.启用蓝牙并使设备处于可发现状态 1.1 在使用BluetoothAdapter类的实例进操作之前,应启用isEnable()方法检查设备是否启用了蓝牙适配器. // 使用意图提示 ...
- [PHP] 商品类型规格属性后台管理(代码流程备忘)
实现界面 涉及到四张表,type(商品类型表),type_spec(商品类型规格关联表),attribute(商品属性表),attribute_value(商品属性值表) 新建基控制器BaseCont ...
- HTML列表(组标签)+div(布局标签)与span
一.列表 HTML中常见的列表有三种,分别是: 1.无序列表,是一组描述列表语义的组标签,列表中每个项之间没有先后顺序:如图: 1)组标签:组标签就是由多个标签组成的一个整体,它们之间共同存在:例如 ...
- html5备忘录——张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1544 一.前言兼图片 ...
- new DialogInterface.OnClickListener()报错的解决办法
在项目过程中 new DialogInterface.OnClickListener()总是报下面的错 Illegal qualified access from the type parameter ...
- Fastify 系列教程二 (中间件、钩子函数和装饰器)
Fastify 系列教程: Fastify 系列教程一 (路由和日志) Fastify 系列教程二 (中间件.钩子函数和装饰器) Fastify 系列教程三 (验证.序列化和生命周期) Fastify ...
- C# 生成缩略图 去除图片旋转角度
图片生成缩略图会有旋转角度 /// <summary> /// 测试JRE图片压缩后图片会旋转问题 /// </summary> public void Uploadimg1( ...
- 自己编写jQuery插件 之 放大镜
一. 效果图 二. 原理讲解 1. 用到了两张图片,一张小图,一张大图. 2. 小图用于直接在页面上显示,大图则用于放大镜内显示 3. 放大镜实际是一个div,而大图则是这个div的背景图 4. 小图 ...
- ui-sref的参数传递
例如:路由配置如下: $stateProvider.state('admin.userList', { url: '/listUser?type&role', //参数必须先在这边声明 tem ...