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等方法来完成这些操作,它们使用起来 ...
随机推荐
- 网页设计——7.css的入门
css的介绍 div+css的设计: 什么是div? 理解示意图: 实例操作: 这里就要用到div+css的布局操作 先写一个html文件,见下图: <html><head>& ...
- 4、C#基础 - C# 的 常见概念简述
在上篇文章中,你跟着我写了一个HelloWorld,本篇中,我们来谈谈一些C#程序中的小概念 1.C# 程序结构 一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declarat ...
- “use strict” 严格模式使用(前端基础系列)
ECMAscript5添加一种严格模式的运行模式("use strict"),让你的js语句在更加严格的环境下进行运行: 一.主要作用: 消除版本javascript中一些不合理及 ...
- day5、文件乱码怎么解决
1.1 Linux下,如何将一个乱码的文件进行重命名 方法一: 命令格式:mv $(ls |egrep "[^a-zA-Z0-9.-]") tandao.tx [root@nb ...
- C language 模拟 win的经典游戏——扫雷
让我们在terminal下愉快的...扫雷 昨天跟奇葩霖聊起"雷区"这个敏感词汇,然后非常荣幸的... 应该轰炸不到我.. . 后来百无聊赖的去玩了把扫雷.然后发现我之前都是乱扫的 ...
- Android 訪问权限清单
Android权限设置 概述 权限 说明 訪问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES 读取或写入登记check-in数据库属性表的权限 获取 ...
- java 内存数据存储
近期在学习的过程中,越发认为基础知识的重要性,so 恶补一下 直接上图上演示样例: 图一:
- 虚拟数据库_json_ajax
html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- 总结一下现在关于Design Support Library的几个博客
原文转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0713/3179.html 关于Design Support Libr ...
- 如何通过Mock API提高APP开发效率?
APP开发过程中,如果可以在客户端的正常项目代码中,自然地(不影响最终apk)添加一种模拟服务器数据返回的功能,这样就可以很方便的在不依赖服务器的情况下展开客户端的开发. Mock API提供了这一问 ...