PHP字符串处理与正则表达式
字符串
1. PHP中的字符串是一种基本数据类型,PHP对unicode没有本地支持。
2. 字符串可以可以通过花括号来访问每一个字符,并且每个花括号只能存放一个字符:
$str = ‘abcd’;
$str{1} = ‘change it’;
echo $str; // accd
3. 双引号中变量内插解析,在双引号中的内容会被解析为字符串,
如果遇到$符号,则会贪婪解析一个尽可能多的合法变量名,使用花括号可以将变量名括起来;
在双引号中解析数组索引或者对象属性时,也可以使用花括号括起来;
4. 常用字符串输出函数:
echo() :输出字符串;
print() :输出一个活或个字符串,执行效率不如echo高,但是提供一个返回值,成功为1,失败为0;
die():输出一条消息,并退出当前脚本,和perl中的die用法一样;是exit()含税的别名;
printf():格式化输出,和c语言类似;
sprintf():将格式化的字符串以返回值的形式保存到变量中;如一个百分数: $f = sprintf(‘%2.2f’,$f*100);
5. 字符串格式化函数:

有点多,要在日后的工作中多使用了,其中*trim()和python中是strim()类似,用来去除一些换行空白等比较好用;nl2br()感觉可能会比较有用,可能是因为似乎用前端的方式更加好一些;htmlspecialchars()处理<、>、等特殊符号很好,不用记忆特殊表示,程序也会更加可读;以及stripslashed()等函数,在网页文本处理中都会应该会比较有用,以后要多总结了。
number_format()函数可以传入四个位置参数,依次为数字、保留的小数位数、小数分割符(默认为’.’)、千位分割符号(默认为’,’),由于是位置参数,所以如果设置了第四个参数,则前面的参数都是必须的;
md5()是使用加密算法经行加密后返回一个加密字符串,对文件的加密可以使用md5_file();
6. 字符串比较函数
strcmp():比较两个字符串,区分大小写,按照字符串的顺序比较字符ASCALL码大小,注意小写大于大写,和perl比较字符串使用一样的方式;
strcasecmp():比较两个字符串,不区分大小写;
strnatcmp():如果有数字的话(数字出现的开始位置要相同),比较数字大小,数字大小相同则比较字符串大小:


正则表达式
PHP支持的正则表达式有两套,一套是PCRE,与perl兼容的正则表达式,以preg_为前缀的函数,另外一套是POSIX扩展语法的正则表达式,使用以ereg_为前缀的函数,PCRE提供的正则表达式效率略占优势。
1. 正则表达式语法和perl中一样;
2. 字符串查找
preg_match():接受三个参数,第一个是pattern,第二个是就具体的字符串,第三个参数提供一个数组,保存匹配的内容,其中0下标为匹配的整体,而1开始的表示捕获的内容;
preg_match_all():PHP中没有模式修正符号:g,用该函数替代,完成全部搜索的功能,区别的是该函数接受第四个可选参数,当第四个参数为PREG_SET_ORDER,下标0的值开始表示捕获的内容;
preg_grep():第二个参数不再是字符串,而是一个包含字符串的数组,会对数组中每个元素进行匹配,并且返回一个匹配成功的数组;
strstr():传入两个字符串,在第一个字符串中搜索第二个字符串,返回从第一个字符串从第一次搜索到的位置开始的部分;stristr()是忽略大小写的版本;
strpos():返回字符串在另外一个字符串中第一次出现的位置,如果没有找到则返回false,strrpos()是从末尾开始查找的版本;
substr():返回一个字符串的一个部分,指定开始和结束位置;闭区间;
3. 字符串替换:
preg_replace():第一个参数是模式,第二个参数是需要替换掉的内容,第三个参数是字符串,前两个参数既可以是单个的模式和字符串,也可以是一个包含多个模式、字符串的数组,数组的内容应该对应,长度相同;
str_replace():第一个参数是查找的字符串,第二个参数是替换的字符串,第三个参数是需要被替换的字符串内容,第四个保存替换的次数;str_ireplace()是大小写忽略版本;
4. 字符串分割和链接:
preg_split():传入两个参数,第一个参数传入匹配模式,第二个为需要分割的字符串,第三个可选参数限制最多返回的子串个数,第四个参数flag是以下标记的任意组合:
PREG_SPLIT_NO_EMPTY:使preg_split()只返回非空成分 ;
PREG_SPLIT_DELIM_CAPTURE:使得可以捕获并返回括号表达式 ;
PREG_SPLIT_OFFSET_CAPTURE:使得返回每个出现的匹配结果的同时,返回所属字符串的偏移量,最终最为一个二元数组;
explode():传入两个字符串,第一个为分割标记字符串,第二个为被分割的字符串,第三个可选参数限制最多返回的子串个数;相当于split();
implode():第一个参数是链接字符串,第二个参数提供一个字符串数组,返回使用链接字符串链接数组中字符串后的字符串;相当于join();
5. 在以上三种基本操作中,如果可以用字符串函数完成的尽量使用字符串函数完成,正则表达式尽量在必须使用的时候才用
PHP字符串处理与正则表达式的更多相关文章
- python字符串转义与正则表达式特殊字符转义
最近在自学python,字符串和正则表达式的特殊字符转义有点混淆,做个笔记简单总结一下. 1.普通字符串转义 在字符串中使用特殊字符时,要用反斜杠(\)转义字符.例如:'Let\'s go!',这里对 ...
- JS_正则表达式_使用字符串创建的正则表达式_反斜杠也需要添加转义符
备注: 使用字符串创建的正则表达式:"\"也需要加转义符: var reg1=new RegExp("\\w+"); 这和 直接使用:var r ...
- Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能
Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能. 下面是个例子: import org.junit.Test; import java. ...
- JavaScript 正则表达式RegExp 和字符串本身的正则表达式
JavaScript 正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex.regexp或RE)使用单个字符串来描述.匹配一系列符合某个句法规则的字符串搜索模 ...
- Python从文件中读取字符串,用正则表达式匹配中文字符的问题
2013-07-27 21:01:37| 在Windows下,用Python从.txt文件中读取字符串,并用正则表达式匹配中文,在网上看了方法,用的时候发现中文没有被匹配. ...
- php array数组的相关处理函数and str字符串处理与正则表达式
下面给各位同学整理了一些关于php array数组的相关处理函数and str字符串处理与正则表达式,希望文章对你会有所帮助. 数组的相关处理函数: 1)数组的键值操作函数 array_value ...
- JavaScript —— 字符串中使用正则表达式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式
一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...
- [改善Java代码]推荐在复杂字符串操作中使用正则表达式
一.分析 字符串的操作,诸如追加.合并.替换.倒序.分隔等,都是在编码过程中经常用到的,而且Java也提供了append.replace.reverse.split等方法来完成这些操作,它们使用起来 ...
随机推荐
- 如何打包静态库.framework文件 iOS
代码调试好了开始打包成sdk,下面是将要打包的FRSDK代码(FRSDK.h暴露在外面有别人调用) 1.创建新工程(Xcode File-New-Project) 2.把下面的红色框的东西移除 3.将 ...
- Loadrunner 中socket协议RecvBuffer接收到数据长度为空
socket通讯,有两种方式,一种是建立长连接(TCP),建立后,不停的发送,接收.另外一种是建立短连接(UDP),建立连接,发送报文,接收响应,关闭连接.两种方式 server的开销不同. 今天出现 ...
- cpci热插拔信号
cpci热插拔信号1 BD_SEL#信号.对外围板是输入,是个1对1信号,来自背板的热插拔控制电路输出.每一个槽一个独立信号.用于控制热插拔外围板的上电控制.不实现热插拔的在背板直接接地:2 HEAL ...
- java 可变參数列表
Java SE5加入了可变參数列表特性 參数能够这样定义.(Object-args).可变參数用"..."来定义,args是可变參数的数组.举个样例: package sample ...
- maven project module 依赖项目创建 ---转
一.创建Maven Project 1.右击 --> New --> Other,--> Maven --> Maven Project --> Next 2.如下图,选 ...
- web前端开发 --好多视频大集合--文化的传播者-杜恩德
提醒: 如果需要的话,尽快保存,说不定哪天分享就消失了呢. 1.妙味WEB前端开发全套视频教程 链接: http://pan.baidu.com/s/1bf1Ow2 密码: 2yyu 2.极客学院前端 ...
- python串口调试,M3650B-HA调试
使用python serial与M3650B-HA(RFID读写器)串口通信 环境:py3.6 模块:pyserial 1.serial模块安装2.废话不多说,直接上代码,测试环境py3.6 # co ...
- CenOS 6.5下 mysql自动备份
1.mysql备份命令是mysqldump,自动执行可以用cron,但是文件名需要带有时间标志,shell处理起来很麻烦,我就选择了python来解决 2.文件名用time模块来解决,执行系统命令 ...
- 【CSS3】浏览器内核、私有前缀
浏览器内核 私有前缀 浏览器 webkit -webkit- chrome.safari.安卓.ios trident -ms- IE gecko -moz- firefox presto -o- o ...
- C++ 知识点总结复习
C++ 1.C++是静态类型语言,使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查. 2.面向对象程序设计 C++ 完全支持面向对象的程序设计,包括面向对象开发的四大特性: 封 ...