如果想匹配如 .,{,$,等特殊字符(在正则表达式中有特殊意义的字符),就必须在该字符前加反斜杠(\),(C中管它\叫‘转义符’)如果想表示这个反斜杠(\),就在他前面再加个反斜杠,即改成(\\)。
必须注意的是在PHP中要尽量把正则表达式放在单引号(')中。如果把正则表达式放在双引号里则会引起一些不必要的麻烦。在PHP的正则表达式中也要 使用反斜杠(\)来‘掩盖’一些特殊的字符--像反斜杠(\)自身。在表达式中如想匹配一个反斜杠(\),也必须使用两个反斜杠(\)来表示它是原义的反 斜杠(\),而不是转义符。
类似的原因,把反斜杠(\)放在双引号中时也要使用两个反斜杠(\)来转义。令人困惑的是,根据以上规则,在PHP中的正则表达式里要表示一个反斜杠(\)就要四个反斜杠(\)。PHP解析器会将四个反斜杠(\)解析成两个。之后正则解析又将之解析成一个。
美圆符$在PHP字串和正则表达式中也是个有特殊意义的字符。如需匹配$的原义字符,就必须写成"\\\$".因为它在双引号里,PHP会将之解析为\$,然后正则解析就会将它匹配为美圆符(而不是表示‘字符串的结束位置’)。
另外需要注意的是,PHP中的正则表达式必须以'/'开始和结束,如:"/abc/",而不能写作"abc"。
单引号表示的正则表达式反向引用用单个反斜杠加数字,例如\1,\2
双引号表示的正则表达式反向引用用两个反斜杠加数字,例如\\1,\\2
举例来说,我要写一个匹配<img>标签的src属性的正则,可以写成
-
PHP code
-
'/\ <img\s[^\>]*?src=(\'|\")(.*?\.(jpg|jpeg|gif|png))\1/im'
或者
-
PHP code
-
"/\<img\s[^\>]*?src=(\'|\")(.*?\.(jpg|jpeg|gif|png))\\1/im"
总体:使用双引号+转义,PHP中引擎和正则表达式的引擎是分离的,PHP先解析,然后正则在解析
自定义模板----了解模板的工作原理
Templates
Templates_c
正则表达式中使用引号的区别
Php解释引擎和正则表达式的解释引擎是分离的
\s---匹配任何空白;
$pattern =“//i”;
echo “\\\s”; ---经php解释后---\\s--经正则表达式引擎解释后\s
echo ‘\s’; ---经php解释后---\s--经正则表达式引擎解释后\s
注意:单引号和双引号
1)‘abc’ “abc”
2)‘$a \b’ “$a \\\b”
P546-547 表16-1
2、安装smarty
http://www.smarty.net 下载
smarty压缩包Smarty-3.1.4.zip
解压到指定的目录Smarty-3.1.4
剪切libs文件夹:smarty.class.php
3、了解smarty的核心类文件
Smarty:效率高、速度快---实时性
默认分隔符{}
如果html中嵌入了css {}有可能产生冲突
1) 重新编辑分隔符:
<{ }>、 <!--{ }-->
2)css文件js文件单独保存到另外的文件夹
配置信息不要直接修改到smarty原文件,常用方法
单独保存init.inc.php文件
4、smarty的注意事项
1)html(tpl)模板文件中路径问题
在模板文件中引入外部文件时使用的相对路径 是相对于
b.php文件来说的。
模板只负责解释占位符中的变量{} <{}>
通过引入图片、css文件、js文件测试
2)html(tpl)模板文件的位置
全部都是相对于
$tpl->template_dir = './tpl';
3) php文件转移到不同目录下
唯一使用绝对路径
echo __FILE__;
echo $_SERVER[‘script_filename’];