PHP正则表达式基础和应用
2015-03-02 17:37
204 查看
常用元字符
常用分组语法
懒惰限定符
正则表达式的常用模式
忽略大小写模式(i):正则匹配将不区分待匹配内容的大小写
多行模式(m):多行匹配,^ 可以匹配字符串开头(字符串的开始位置),也可以匹配行的开头(即换行符\n之后的位置);$ 可以匹配字符串结尾(字符串的结束位置), 也可以匹配行的结尾(即换行符\n之前的位置);
\r 匹配 [CR]、\n 匹配[LF] <—— CR为回车 LF为换行
字符串多个段落,比如
ab
cd
e
在windows操作系统中其实是:ab[CR][LF]cd[CR][LF]e
点号通配模式(s):使点号元字符可以匹配换行符
懒惰模式(U):懒惰匹配
结尾限制(D):如果使用$限制结尾字符,则不允许结尾有换行
支持UTF-8转义表达式(u):使用u修饰符,就可以使用UTF-8的转义表达,例"/^[\x{4e00}-\x{9fa5}]+$/u"
正则表达式的效率和优化
1)使用字符组代替分支条件
2)优先选择最左端的匹配结果
3)标准量词是匹配优先的
4)谨慎用点号元字符,尽可能不用星号和加号这样的任意量词
5)尽量使用字符串函数处理代替
6)合理使用括号
7)起始、行描点优化
8)量词等价转换的效率差异
9)对打而全的表达式进行拆分
10)使用正则以外的解决方案(PHP的字符串函数、PHP的Tokenizer系列函数、PHP的url函数及一些http函数、PHP的filer系列函数、JavaScript的DOM模型)
转义在数据安全中的应用
php中 htmlspecialchars() 函数 把代码中的特殊字符转为HTML实体
过滤所有HTML标签 <\/?[^>]+>
php中 strip_tags() 函数用于从字符串中去除HTML和PHP标记,仅保留参数中指定的标签
PHP中 addslashes() 函数返回一个字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线
URL重写两种实现方式
1.纯代码实现,通过解析 PATH_INFO 实现
2.服务器实现,如利用 Apache 的 mod_rewrite 模块实现
Apache 开启 Rewrite 模块
设置 AllowOverride All 的目的是让 .htaccess 文件生效
新建一个 .htaccess 文件。 .htaccess 文件是 Apache 中重要的配置文件,其格式为纯文本
.htaccess 中的代码
1)打开运行时重写功能
RewriteEngine on
2)建立重写规则
RewriteRule index.html index.php
RewriteRule list-([A-Z]+)\.html $list.php?mode=$1 [NC]
URL重写给网站带来的好处
1)有利于搜索引擎的抓取
2)用户更容易记忆
3)影藏实现技术
元字符 | 描述 |
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
- | 表示范围 |
[] | 匹配括号中的任意一个字符 |
*、+、? | 量词 |
\W | 匹配任意不是字母、数字、下划线、汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
类别 | 代码/语法 | 描述 |
捕获 | (exp) | 匹配exp,并捕获文本到自动命名的组里 |
(?<name>exp) | 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) | |
(?:exp) | 匹配exp,不捕获匹配的文本,也不给此分组分配组号 | |
零宽断言 | (?=exp) | 匹配exp前面的位置 |
(?<=exp) | 匹配exp后面的位置 | |
(?!exp) | 匹配后面跟的不是exp的位置 | |
(?<!exp) | 匹配前面不是exp的位置 | |
注释 | (?#comment) | 提供注释辅助阅读,不对正则表达式的处理产生任何影响 |
懒惰限定符代码/语法 | 描述 |
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
{n,m}? | 重复n到m次,但尽可能少重复 |
{n,}? | 重复n次以上,但尽可能少重复 |
忽略大小写模式(i):正则匹配将不区分待匹配内容的大小写
多行模式(m):多行匹配,^ 可以匹配字符串开头(字符串的开始位置),也可以匹配行的开头(即换行符\n之后的位置);$ 可以匹配字符串结尾(字符串的结束位置), 也可以匹配行的结尾(即换行符\n之前的位置);
\r 匹配 [CR]、\n 匹配[LF] <—— CR为回车 LF为换行
字符串多个段落,比如
ab
cd
e
在windows操作系统中其实是:ab[CR][LF]cd[CR][LF]e
点号通配模式(s):使点号元字符可以匹配换行符
懒惰模式(U):懒惰匹配
结尾限制(D):如果使用$限制结尾字符,则不允许结尾有换行
支持UTF-8转义表达式(u):使用u修饰符,就可以使用UTF-8的转义表达,例"/^[\x{4e00}-\x{9fa5}]+$/u"
正则表达式的效率和优化
1)使用字符组代替分支条件
2)优先选择最左端的匹配结果
3)标准量词是匹配优先的
4)谨慎用点号元字符,尽可能不用星号和加号这样的任意量词
5)尽量使用字符串函数处理代替
6)合理使用括号
7)起始、行描点优化
8)量词等价转换的效率差异
9)对打而全的表达式进行拆分
10)使用正则以外的解决方案(PHP的字符串函数、PHP的Tokenizer系列函数、PHP的url函数及一些http函数、PHP的filer系列函数、JavaScript的DOM模型)
转义在数据安全中的应用
php中 htmlspecialchars() 函数 把代码中的特殊字符转为HTML实体
过滤所有HTML标签 <\/?[^>]+>
php中 strip_tags() 函数用于从字符串中去除HTML和PHP标记,仅保留参数中指定的标签
PHP中 addslashes() 函数返回一个字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线
URL重写两种实现方式
1.纯代码实现,通过解析 PATH_INFO 实现
2.服务器实现,如利用 Apache 的 mod_rewrite 模块实现
Apache 开启 Rewrite 模块
设置 AllowOverride All 的目的是让 .htaccess 文件生效
新建一个 .htaccess 文件。 .htaccess 文件是 Apache 中重要的配置文件,其格式为纯文本
.htaccess 中的代码
1)打开运行时重写功能
RewriteEngine on
2)建立重写规则
RewriteRule index.html index.php
RewriteRule list-([A-Z]+)\.html $list.php?mode=$1 [NC]
URL重写给网站带来的好处
1)有利于搜索引擎的抓取
2)用户更容易记忆
3)影藏实现技术
相关文章推荐
- PHP核心技术与最佳实践 读书笔记 第三章 正则表达式基础与应用
- PHP应用正则表达式分析RSS
- PHP中正则表达式学习及应用
- PHP正则表达式基础
- PHP基础知识 php的分页原理,url函数和正则表达式基础
- PHP中正则表达式学习及应用
- [零基础学JAVA]Java SE应用部分-22.Eclipse及正则表达式使用 推荐
- php入门学习知识点四 PHP正则表达式基本应用
- 我的php学习笔记(三十三)PHP中正则表达式学习及应用(一)
- 我的php学习笔记(三十四)PHP中正则表达式学习及应用(二)
- php正则表达式基础入门
- 应用PHP正则表达式提取某网站中最新发表的代理ip地址
- php中常用的正则表达式的介绍及应用
- PHP应用-正则表达式ppt纲要
- PHP中一些正则表达式的应用
- PHP正则表达式应用技巧
- PHP编程中正则表达式应用实例一
- 在线讲堂:PHP中正则表达式的应用
- 正则表达式基础及高级应用
- PHP正则表达式基础