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. 在以上三种基本操作中,如果可以用字符串函数完成的尽量使用字符串函数完成,正则表达式尽量在必须使用的时候才用

时间: 2024-10-14 09:59:55

PHP字符串处理与正则表达式的相关文章

【原】Java学习笔记023 - 字符串缓冲区_正则表达式

1 package cn.temptation; 2 3 import java.util.Arrays; 4 5 public class Sample01 { 6 public static void main(String[] args) { 7 // 因为字符串创建后就不能修改,导致在进行字符串拼接时,会产生大量的中间字符串,创建对象都是需要消耗资源 8 // 所以,能不用字符串的直接拼接尽量不使用 9 10 // 字符串缓冲区:StringBuffer类/StringBuilder类

第四章 字符串操作与正则表达式(5)

******** 4.6 正则表达式的介绍 (from book < PHP & MySQL Web Development>)PHP 支持两种格式的正则表达式语法:POSIX 和 Perl.用途:完成复杂的模式匹配.难度:难******** 4.6.1 基础知识 ****** 定义:正则表达式是一种描述一段文本模式的方法. 类比:strstr()函数,是在一个字符串的某个位置(如果不指明则可能在字符串中的任何位置)匹配另一个字符串. 例子:字符处"shop"匹配正

Day3_字符串操作与正则表达式

本节课的主要内容有:字符串的格式化.连接与分割.比较.匹配和替换.使用正则表达式 字符串的格式化: 去除空格:trim() 使用html格式化:nl2br()  替换‘\n’为‘<br />’ 打印格式化:printf() 大小写:strtoupper() strtolower() ucfirst() ucwords() 特殊字符转义:addlashes() striplashes() 连接与分割字符串 按指定分隔符分隔:explode() 分隔字符串到数组; strtok()查找当前分隔出的

字符串不是正则表达式

上个月写那段处理CVS文件中的逗号的小程序时,顺便写了个测试程序.测试程序先读一“|”分割字段的文件.我们原来的程序中,都是使用Java中的 StringTokenizer 类来处理读入的每行数据.我的测试程序中改用String.split()方法,但是处理一“|”分割字段的文件总是不正确.换成其它分隔符或者使用StringTokenizer就没问题.墨迹了好长时间也没找出问题. “大事不决问Google,内事不决问老婆”.老婆是指望不上了,她是做会计工作的.只好问Google.随便看了一篇文章

字符串处理利器-正则表达式

正则表达式 一.常见的符号的介绍 1.1 预定义字符类 符号 说明 . 任何字符(与行结束符可能匹配也可能不匹配) \d 数字:[0-9] \D 非数字: [^0-9] \s 空白字符:[ \t\n\x0B\f\r] \S 非空白字符:[^\s] \w 单词字符:[a-zA-Z_0-9] \W 非单词字符:[^\w] **** 转义字符,比如"\"匹配"" ,"{"匹配"{". 1.2 数量词 符号 说明 * 等价于{0,}

字符串处理与正则表达式

功能:将cmd中的netstat -n的输出作为原始字符串做整理. import console var f = io.popen("netstat -n" ) var str = f.read( -1 ); //直接输出中文会乱码,所以先转换 str2 = string.fromto(str,936,65001) f.close(); io.open(); //打开控制台 //io.print(str2); //输出全部结果 var m1 = string.match(str2,&q

具有相同模式的字符串,使用正则表达式组的提取和替换的案例

对具有相同模式的字符串内不同的组的提取怎样做呢,我是这样做的: 提取字符串:sourcetext:{name:john,data:[1,2,3],name:marry,data:[4,5,6]} 代码: Regex reg = new Regex(@"data:\[([\w|.|,]{1,})\]", RegexOptions.IgnoreCase); MatchCollection matches = reg.Matches(series); foreach (Match match

delphi验证‘数字字符串’地址的正则表达式验证function

uses PerlRegEx; function CheckSortKey(SortKey:string):Boolean;//验证排序数字字符串var PerlRegEx: TPerlRegEx;begin PerlRegEx := TPerlRegEx.Create(nil); PerlRegEx.Subject := SortKey; PerlRegEx.RegEx := '^\d{10}$'; Result := PerlRegEx.Match; PerlRegEx.Free; end;

开发小计之判断输入字符串类型(正则表达式)

#pragma mark - 正则表达式 - (BOOL)isMobileNumber:(NSString *)mobileNum { /** * 手机号码 * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188 * 联通:130,131,132,152,155,156,185,186 * 电信:133,1349,153,180,189 */ NSString * MOBILE = @"^1(3[0-9]|5[0-35-