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等方法来完成这些操作,它们使用起来 ...
随机推荐
- Nginx如何配置虚拟主机?
注意,该环境是依赖于http://www.php20.com/forum.php?m ... &extra=page%3D1 基础上进行配置.默认不具备这些文件 .下面是增加一个mytest点 ...
- 深入理解javascript函数进阶系列第一篇——高阶函数
前面的话 前面的函数系列中介绍了函数的基础用法.从本文开始,将介绍javascript函数进阶系列,本文将详细介绍高阶函数 定义 高阶函数(higher-order function)指操作函数的函数 ...
- 欢迎大家关注我的微信公众号(nangongkuo)
欢迎大家关注我的微信公众号,在这个公众号里面我会给大家分享我学习过程中分享给大家的一些技术性的东西,和一些生活经验的总结分享.
- 》》HTML5 移动页面自适应手机屏幕四类方法
1.使用meta标签:viewport H5移动端页面自适应普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统. ...
- python3 爬虫---爬取糗事百科
这次爬取的网站是糗事百科,网址是:http://www.qiushibaike.com/hot/page/1 分析网址,参数''指的是页数,第二页就是'/page/2',以此类推... 一.分析网页 ...
- 关于O(logN)的正确理解
学计算机的或许对O(logN)这个符号并不陌生,快排.堆排.归并等等排序的平均时间复杂度. 问题来了,之前一直有个歧义就是:logN的底数到底是多少? 这个问题搁置着并没有去深究,仅仅是想应该是2吧. ...
- java多线程编程核心技术——第六章总结
目录 1.0立即加载/"饿汉式" 2.0延迟加载/"懒汉式" 3.0使用静态内置类实现单例模式 4.0序列化与反序列化的单例模式实现 5.0使用static代码 ...
- Python笔记·第七章—— IO(文件)处理
一.文件处理简介 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知 ...
- strus2项目中百度编辑器运用的几点细节
百度编辑器的运用可以参考我之前写的一篇文章,在java项目中加入百度富文本编辑器.这篇文章是以maven+spring mvc项目进行的,总得来说配置比较简单,但是如果是想在strus2项目中配置ue ...
- MVC(二)
一: 在新接触MVC的时候可以先使用VS建一个MVC项目(不是空项目哟),MVC特别人性化的建一个示例,展示了MVC项目的基本组成.如下: App_Data 数据库文件,需根据数据库变动而变更. Ap ...