php字符串基本操作

字符串操作

在php开发过程中有些基础知识一时想不起来,如果同事间合作略显尴尬,小编整理了一些对字符串的基本操作的知识点供大家参考。如有误点还请指点,谢谢。
1.字符串简介

字符串是指由零个或多个字符串构成的一个集合,这里所说的字符主要包含以下几种类型。

1.数字类型:1,2,3等。
2.字母类型:a,b,c等。
3.特殊字符型:#,¥,%等。
4.不可见字符型:换行符(\n),回车符(\r),Tab字符(\t)等。

其中,不可见字符是比较特殊的一组字符,它用来控制字符串格式化输出,在浏览器上不可见,只能看到字符串输出的结果。

2.单引号和双引号的使用方法及区别

字符串同城一串的整体作为操作对象,一般用单引号或者双引号表示一个字符。单引号和双引号在使用上有一定的区别。

$s1 = "张三" ;  echo $s1  : 张三
$s2 = '李四';  echo $s2 :李四

对比

$s4 = "你好s1" ;  输出: 你好张三
$s4 = "你好s2" ;  输出:你好$s2

总结:就是说双引号中的变量PHP会解析,而单引号中的变量PHP不会解析.

3.字符串的连接符

半角句号"."是字符串链接符,可以吧两个或两个以上的字符串链接成一个字符串.

例如:

<?php
$name = "PHP";
$name1 = "是世界上最好的语言!";
echo $name.$name1;
?>
结果为:PHP是世界上最好的语言!

4.字符串操作

4.1 去除字符串收尾空格和特殊字符方法

1.trim()函数:去除首尾字符和特殊符,并返回处理后的字符
2.ltrim()函数:去除字符串左边的空格和特殊字符
3.rtrim()函数:去除字符串右边的空格和特殊字符

例如:string trim(strimg str[,string charlist]);

str:表示要操作的字符串对象
charlist:可选参数,表示指定要从字符串中删除哪些字符,如果不设置则删除所有字符
charlist可选参数:

  • \0: null,空格
  • \t: tab,制表符
  • \n: 换行符
  • \x0B: 垂直制表符
  • \r: 回车符
  • " ": 空格
    除了这些参数之外,也可以在chaarlist参数中提供要去除的特殊字符.

4.2 字符串转义

字符串转义、还原的方法有两种:一种是手动转义&字符串还原数据,另一种是自动转义&还原字符串数据;

1.手动转义,还原字符串数据.

在字需要转义的字符串前面加"\"转移符. 对于数据量较大的字符串建议使用自动转义函数转义.

注意:手动转义的字符串可以使用 addcslashes()函数进行字符串还原.

2.自动转义,还原字符串数据.

  • addslashes()函数:自动转义函数:
  • stripslashes()函数:自动还原函数:
  • addslashes()函数为字符串str加入反斜线"\"; 使用方法:string addslashes(strimg str);
  • stripslashes()函数把转义后的字符串还原;使用方法:strimg stripslashes(strimg str);

注意:如果参数charlist中包含\n,\r等字符,讲义C语言风格转换,而其他非字母数字且ASCII码值低于32或高于126的字符均转换成八进制表示.

4.3 获取字符串长度

1.strlen()函数:获取字符串长度值,例如:int strlen(string str)

说明:汉字占两个字符,数字,英文,小数点,下划线和空格占一个字符.

2.strlen()函数在获取字符串长度的同时也可以检测字符串长度.

<?
if(strlen($_POST['pwd'])<6){        //检测是否小于6
    echo "<script>alert('用户名或密码不得小于6位!');history.back();</script>";
}else{
    echo "用户信息合法!";
}

4.4 截取字符串

1.substr() 函数:分割字符串 例如:string substr(string str,int start [,int length])

  • str:指定字符串对象
  • start:指定开始截取字符串的位置,如果为负数,则从字符串的末尾开始.(开始从0位置开始)
  • length:可选参数,指定截取字符的个数,如果为负,则表示渠道倒数第length个长度.
  • 连接字符:如果字符大于30个只显示前30个字符,后面用点代替
if(strlen($text)>30){
    echo substr($text,0,30)."...";
}else{
    echo $text;
}

注意:如果截取字符串有中文请尽量保持截取偶数个字符,如果截取的值是奇数,可能会导致字符乱码,因为一个中文字占两个字符,解决办法就是应用substr()编写一个自定义函数.

4.5 比较字符串

strcmp($str1,$str2) 字节大小比较区分大小写
strcasecmp($str1,$str2) 字节大小比较不区分大小写
strnatcmp($str1,$str2)  自然排序法比较区分大小写(主要是字符串中含有的数字比较,不分前后)
strnatcasecmp($str1,$str2)  自然排序比较不区分大小写
strncmp(string str1,strimg str2,int len)    指定从源字符串位置开始比较,
len是用来比较字符串中的前n个字符

PHP中常用的字符串比较方法: 按字节进行比较:strcmp()strcasecmp()函数这两个函数区别是strcmp()函数区分大小写,而strcasecmp()函数不区分字符大小写,函数strnatcmp()同上

例如:

$str1 = "编程使我快乐!";

$str2 = "编程使我快乐!";

$str3 = "teacher";

$str4 = "TEACHER";

echo strcmp($str1,$str2);   //这两个字符串相等

echo strcmp($str3,$str4);   //该函数区分大小写

echo strcasecmp($str3,$str4);   //该函数不区分大小写

结果: 0   1   0

分析:如果两个字符串大小相等返回0, 函数1比函数2大则返回值大于0,函数1比函数2小则返回值小于0,如果大小写不一致strcmp函数返回1,strcasecmp函数返回0,因此strcmp函数可以用于用户登录用户名和密码的验证.

注意:自然运算中1比2小,而计算机序列中1比2大.

4.6 检索字符串

1.strstr()函数查找指定的关键字(区分大小写)

语法:string strstr(string haystack,string needle);
  • haystack:必要参数,指定从哪个字符串中进行搜索
  • needle:必要参数,指定所搜对象,如果该参数是一个数值,那么将搜索与这个数值的ASCII值相匹配的字符.

2.strchr()函数与其正好相反,该函数是从字符串后序的位置开始检索子串的.

3.substr_count()函数检索子串出现的次数:语法:int substr__count(string haystack,string needle)haystack:指定字符串,needle:指定字符

4.7 替换字符串

替换字符串可以通过两个函数实现:

1.str_ireplace()函数 当确定要替换的字符串时使用

2.substr_replace()函数 不确定要替换的字符串使用(下标)

 str_ireplace()函数

语法格式如下:mixed str_ireplace(mixed search,mixed replace,mixed subject [,int &count]),使用新的字符串(子串)替换原始字符串中被指定要替换的字符串。

说明:将所有在参数subject中出现的参数search以参数replace取代,参数count表示取代字符串执行的次数,本函数不区分大小写。如果要区分大小写可以使用 str_replace函数

substr_replace()函数

语法:string substr_replace(string str,string repl,int start,[int length])

说明:如果参数start设为负数,而参数length数值小于或等于start数值,那么length的值自动为0。

  • str:原始字符串
  • repl:替换后的新字符串
  • start:制定替换字符串开始位置。正数从开头开始,负数从末尾开始,0表示从起始位置第一个字符
  • length:可选参数,表示替换的长度,默认值是整个字符串,正数表示起始位置从字符串开头开始,负数表示起始位置从字符串末尾开始,0表示插入而非替代。

4.8 字符串格式化

php中字符串格式化分为多种,按照格式分为字符串格式化和数字字符串格式化。数字字符串格式化最常用。

number_format()函数用来将数字字符串格式化

语法:string number_format(float number [int num_decimal_places,][string dec_seperator,string thousands_separator]);

注意:该函数有4个参数:可以有1个,2个,4个。不能只给3个。

1.$number:舍去小数点后面值,且第三位数字以逗号隔开。
2.num_decimal_places:(可选)格式化到小数点后第num_decimal_places位。且每3位用逗号分开,
3.dec_seperator:用来替代小数点'.';
4.thousands_seperator:用来替代第3位数字隔开的逗号(,)。

例如:

$number = 111555444.3306;
echo number_format($number,2,'.','.');

一个参数的值:111,555,444
两个参数的值:111,555,444.33
四个参数的值:111.555.444.33

4.9分割字符串

explode()函数:分割字符串,该函数将按照指定的规则对字符串进行分割,返回值为数组。

语法格式:array explode(string separator,string str[,int (limit)]);

1.separator:必要参数,指定分割的标识符,如果为空返回false,如果separator包含的值在str中找不到,那么explode函数将返回包含str单个元素的数组。
2.str:必要参数,指定将要被进行分割的字符串。
3.limit:可选参数,如果设置了limit参数,则返回的数组包含最多limit个元素,而最后的元素将包含str的剩余部分,如果limit参数是负数,则返回除了最后一个limit个元素外的所有元素。

5.0合成字符串

implode()函数:可以将数组中的内容合成一个新字符串。

语法格式如下:string implode(string glue,array pieces)

1.glue:字符串类型,指定分隔符
2.pieces:数组配型,指定要被合并的数组。
说明:explode()函数和implode()函数是两个相对的函数,一个用于拆分一个用于合成。

以上是对字符串的基本操作分类的各种函数,重点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容